dポイントプレゼントキャンペーン実施中!

円を入力して、ドルに直し、そのドルを少数点以下2桁で表すために、四捨五入をするプログラムを書きたいです。ただ、まだ授業で、printf, scanf, if文, switch文までしかやってないので、これらを使用してプログラムを書くやりかたを考えています。
四捨五入せずに、切り捨てるプログラムは下のように書いてみました。

よろしくお願いします。


#include <stdio.h>

main()
{
double Y,D;

printf("金額(円)を入力せよ:",Y);
scanf("%lf",&Y);
D=Y/101.48;
printf("米ドルでは、%.2lfドルです。\n",D);
}

A 回答 (4件)

ご存知の通り、浮動小数点数の小数点以下は正確に表せない場合が多いです。


ですから浮動小数点数のまま四捨五入するのではなく、
D=Y/101.48;
で浮動小数点数におけるドルの値を求めたのち、
I=D ;/* Iの型はint */
D-=I ;
で整数部分と小数点以下に分離して、
printf ("%d.%d\n", I, (int)(D*100.0+0.5)) ;
としたらいかがでしょうか?
    • good
    • 1

D=double((int(Y*1000.0/101.48)+5)/10)/100.0;



これでどう?
頭の中で考えただけだから検証してね。
    • good
    • 0

四捨五入にはround関数を使います。


小数第3位で四捨五入するには...

D = round(D * 100.0) / 100.0;

でよいのではないでしょうか?
    • good
    • 0

切り捨てと四捨五入との関係を考えてみよう.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!