c++ 간단 코딩 뜻하지 않은 극한값 계산 해결방법 질문

sks0706의 이미지

이 2차식이 양의 값을 가지는 x의 범위를 표현하라. 이 2차식의 값이 0보다 클 때, 참값을 가지는 C++부울 식을 작성하라.
(x^2 - x - 2)

#include
#include

using namespace std;

int main() {

cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout.setf(ios::boolalpha);

bool isPositive;
for (double x = -2.0; x <= 3.0 ; x += 0.1) {
cout << "x = " << x << "\t: " << pow(x, 2) - x - 2 << "\t";
isPositive = (pow(x, 2) - x - 2 >= 0) ? true : false;
cout << isPositive << endl;
}
}

질문 입니다!.
코딩은 했는데 x의 형식이 double형이라서 그런지 -0이 계산됩니다.
-0이 계산될 곳이 없는데 -1을 넣으면 -0.00 (??!?!)
+0인데.. 왜....

여기서 발생한 코드적 문제점하고 해결 방법좀 알려주세요....

친구는 그냥 해답에 나와있는 데로
(x < -1)||(x > 2)
라고 쓰라는데 그건 제성격에 안맞아서 ㅋㅋ

DarkSide의 이미지

계속 나오는 질문인데, 0.1이 이진수로는 무한 소수이기 때문에 정확한 계산이 되지 않습니다.
검색해 보세요.

sks0706의 이미지

아하 감사 함니다ㅠㅠ 0.5 또는 0.05는 된다는 말씀 이신데 해결 이것 말고 근본적인 해결방법으로
bool isPositive;
double x;
for (int y = -20; y <= 30 ; y++) {
x = double(y) / 10;
cout << "x = " << x << "\t: " << pow(x, 2) - x - 2 << "\t";
isPositive = (pow(x, 2) - x - 2 >= 0) ? true : false;
cout << isPositive << endl;
}
이건 나쁘지 않은가요?

DarkSide의 이미지

0.05도 안 되고요,
1을 10으로 나누어도 이진수로 정확히 표현 안 되는건 마찬가지입니다.

twinwings의 이미지

애초에 문제 의도가 친구분이 말한 걸 원하는 것 같구요.

고정소수점 정확도를 얻을려면 저 식보단

10^N * X = x

식으로 치환해서 N 자리의 정확도로 '정수' 계산하는게 낫습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.