- ベストアンサー
C言語
C言語で、四捨五入するにはどうすればよいのですか? 教えてください。宜しくお願いします。
- みんなの回答 (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)
ただ、10進2進変換での誤差があるので、完璧を求めるならsprintfで数字列にして四捨五入する必要があります。 例えば、0.025は二進法では無限小数になります。printfしたら0.05と出力される数値でも、コンピュータの内部では0.249999999999999といった値になっています。これを少数以下2桁で四捨五入すると0.02になってしまいます。 このような誤差が許されるなら、mathライブラリのrintを使って、 rint(a*100)/100; と、簡単に済ませればいいとおもいます。
- a-saitoh
- ベストアンサー率30% (524/1722)
状況によって手順は変わってきます。 扱いたい数は整数ですか浮動小数点ですか? 負の数を四捨五入することはありますか? 四捨五入したいのはどの桁ですか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
double a; int b; … b=a+0.5; //小数点以下四捨五入
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
>>2 その手がありましたね。汗
- jppy
- ベストアンサー率14% (14/99)
どこを四捨五入するのか分からんが・・・ No1さんに追加 if文を使わなくても b = a + 5 - a % 10; でどうでしょ?
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
int a に対してするとしたら・・・ a + (a % 10 >= 5 ? 10 : 0) - a % 10; #ただし、負はこれではできません。
補足
小数点以下第3桁目で四捨五入して、小数点以下第2桁目までの数値 5,567789 5,57