C言語関係掲示板

過去ログ

No887 小数第3位を四捨五入

[戻る] [ホームページ]
No.375

小数第3位を四捨五入
投稿者---優太郎(2003/08/05 21:38:02)


小数第3位を四捨五入の仕方が分かりません。+0.005を足してやってみたのですが、67・954の場合「67.95」と出力されなければいけないのに、「67.00」と出力されてしまいます。格納する型はfloat型です。やり方を教えてください。

No.379

Re:小数第3位を四捨五入
投稿者---たいちう(2003/08/06 10:04:37)


0.005を足して、100倍して、小数点以下を切り捨てて(floor関数)、100で割る。

No.380

Re:小数第3位を四捨五入
投稿者---nop(2003/08/06 17:57:40)


>小数第3位を四捨五入の仕方が分かりません。

こんな関数を作るというのはどうよ?
ちなみに、小数点第三位を四捨五入するなら、

 round( val, 2 );

と言う具合に呼び出せば OK。

#include    <stdio.h>
#include    <stdlib.h>

/* ************************************************************
    関数名【 round() 】
        丸め処理関数
    処理概要
        浮動小数点数を指定された精度で丸めた値を返す
    引数
        1) val       = 丸めたい値
        2) precision = 精度
    戻り値
        指定精度で丸めた値
************************************************************ */
double    round( double val, int precision )
{
    /* ***** 内部変数定義 ***** */
    double    ret;
    char    buf[256] = {'\0'};
    char    *p;

    /* ***** 丸めを行い文字列に変換 ***** */
    sprintf( buf, "%.*f", precision, val );
    /* ***** 文字列から数値に再変換 ***** */
    ret = strtod( buf, &p );

    return ret;
}


No.382

Re:小数第3位を四捨五入
投稿者---優太郎(2003/08/07 13:10:12)


>小数第3位を四捨五入の仕方が分かりません。+0.005を足してやってみたのですが、67・954の場合「67.95」と出力されなければいけないのに、「67.00」と出力されてしまいます。格納する型はfloat型です。やり方を教えてください。
たいちうさん、nopさん教えていただき有難うございました。おかげで、四捨五入をすることが出来ました。本当に有難うございました。