반올림 관련 질문드립니다..

topofgenius의 이미지

환경은

HP - Unix 기반이구요

C 입니다.

printf사용시 문제가 있어서 질문드립니다.

printf("%.0f \n", 10.4);
printf("%.0f \n", 10.5);
printf("%.0f \n", 10.6);

를 출력시.. 결과값이

10
10
11 이 나옵니다.

10.4 와 10.6은 이해가 되는데..

10.5의경우 왜 11이 아니라 10이 나오는지 궁금합니다.

10.51로 했을경우는 11로 나옵니다.

컴파일 옵션으로 잡을 수 있을까요?

VC로 했을경우.. 결과는 11로 잘 나오구요..

palsuet의 이미지

왜 그렇게 나오는 지 원인은 설명해 드릴 수 없습니다만, round 함수를 쓰면 원하는 결과를 얻을 수 있을 겁니다.

#include <stdio.h>
#include <math.h>
 
int main(int argc, char *argv[])
{
    printf("%.0f\n", round(10.4));
    printf("%.0f\n", round(10.5));
    printf("%.0f\n", round(10.6));
 
    return 0;
}

--
feel the gravity

feel the gravity

bluekyu의 이미지

설마 해서 gcc 로 확인해보니까 유효숫자 계산을 따르네요. 10.5를 반올림 하면 10이 되고, 11.5를 반올림 하면 12가 됩니다. 유효숫자에서 유효숫자의 다음 자리가 5인 경우 마지막 유효숫자가 홀수이면 올리고, 짝수이면 버리게 됩니다.

즉, 10.5 에서 일의 자리까지 반올림을 하는데, 5 앞의 숫자가 짝수이므로 버리게 됩니다. 11.5 를 반올림 해보시면 5 앞의 숫자가 홀수 이므로 12로 올려지게 됩니다.

파이썬도 돌려보니까 마찬가지 현상이 나타나네요.

--------blog--------
http://bluekyu.me/

/*** Signature ******************
* blog: http://blog.bluekyu.me/ *
********************************/

ruwin126의 이미지

자세한건 아래 링크로

http://haskell.springnote.com/pages/661685

근데 gcc가 언제부터 round-to-even을 도입했지?

topofgenius의 이미지

감사합니다.

그런데 이걸 해결방법은 없나요?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.