以下は目次です。
ある浮動小数点数を、小数点以下で四捨五入したいとします。
小数点の位置以外の箇所で四捨五入を行いたいこともあると思いますが、
小数点の位置での四捨五入を行う方法さえ分かっていれば、 事前に
10n倍してから計算し、結果を
10-n倍して戻すことで実現できます
(ただし、桁溢れには注意してください)。
たとえば、「3.4」は「3」に、「3.5」は「4」になるようにします。 また、負数の場合には、「-3.4」は「-3」に、「-3.5」は「-4」になります。
標準ライブラリ関数の round関数を使うのが簡単です。
round関数は、数値を double型で扱いますが、float型で扱いたい場合は、roundf関数が、long double型で扱いたい場合はroundl関数が使えます。
#include <math.h>
#include <stdio.h>
int main(void)
{
("%lf\n", round(3.4));
printf("%lf\n", round(3.5));
printf("%lf\n", round(-3.4));
printf("%lf\n", round(-3.5));
printf}
実行結果:
3.000000
4.000000
-3.000000
-4.000000
応用として、小数点以下第2位で四捨五入するには、次のようにします。
#include <math.h>
#include <stdio.h>
int main(void)
{
("%lf\n", round(3.154 * 100) / 100);
printf("%lf\n", round(3.155 * 100) / 100);
printf("%lf\n", round(-3.154 * 100) / 100);
printf("%lf\n", round(-3.155 * 100) / 100);
printf}
実行結果:
3.150000
3.160000
-3.150000
-3.160000
return 0;
を削除(C言語編全体でのコードの統一)新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |