• ベストアンサー

C言語

C言語で、四捨五入するにはどうすればよいのですか? 教えてください。宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.7

#include <stdio.h> #include <math.h> int main(void){ double x=5.567789; double y; y=floor(x*100+0.5)/100; printf("x:%f round x:%f\n", x, y); return 0; }

その他の回答 (6)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.6

ただ、10進2進変換での誤差があるので、完璧を求めるならsprintfで数字列にして四捨五入する必要があります。 例えば、0.025は二進法では無限小数になります。printfしたら0.05と出力される数値でも、コンピュータの内部では0.249999999999999といった値になっています。これを少数以下2桁で四捨五入すると0.02になってしまいます。 このような誤差が許されるなら、mathライブラリのrintを使って、 rint(a*100)/100; と、簡単に済ませればいいとおもいます。

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.5

状況によって手順は変わってきます。 扱いたい数は整数ですか浮動小数点ですか? 負の数を四捨五入することはありますか? 四捨五入したいのはどの桁ですか?

gsosba
質問者

補足

小数点以下第3桁目で四捨五入して、小数点以下第2桁目までの数値 5,567789 5,57

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

double a; int b; … b=a+0.5; //小数点以下四捨五入

回答No.3

>>2 その手がありましたね。汗

  • jppy
  • ベストアンサー率14% (14/99)
回答No.2

どこを四捨五入するのか分からんが・・・ No1さんに追加 if文を使わなくても b = a + 5 - a % 10; でどうでしょ?

回答No.1

int a に対してするとしたら・・・ a + (a % 10 >= 5 ? 10 : 0) - a % 10; #ただし、負はこれではできません。

関連するQ&A