• ベストアンサー

C言語もしくは算数の問題

aに消費税、bに税抜価格で 税込価格を小数点切り捨てで出力しなさいという問題で 以下のようにしたのですが不合格でした a=8, b=126 の答えは136と正解になるのですが、他の検証でバツが出てしまいます どこが間違ってるのか解りません よろしくおねがいします #include <stdio.h> int main() { float a, b; scanf("%f %f", &a, &b); printf("%.f\n", b*(a/100+1)); return 0; }

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

  • ベストアンサー
  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.4

%.0fは四捨五入とは限りません。 この処理でC言語自体に規定はなかったはずで、ieee754ルールで処理している事例が多いだけという状況だったはずです。 浮動小数点の小数点以下切り捨てはfloor関数を使って下さい。 四捨五入はround関数、切り上げはceil関数です。 切り捨て手段として整数型に変換するのはやりがちな手段ですが、指定の整数型が持てる値の範囲がコンパイルターゲットやコンパイラに依存するという別の問題を抱える事になるので、目的が整数型に変換するのでない限りお勧めしません。

sus-sus
質問者

お礼

ありがとうございました

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

> どうすれば切り捨てになりますか? intにキャストして、整数化するといいでしょう。

sus-sus
質問者

お礼

さようなら

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

切り捨てでなく、四捨五入して表示しています。 例えば、 8 99 だと、税額7円で106円になるべきところ、107円になってしまう。

sus-sus
質問者

お礼

どうすれば切り捨てになりますか? %.0fだと切り捨てだと思ってたのですが四捨五入なんですね

すると、全ての回答が全文表示されます。
  • hahaha8635
  • ベストアンサー率22% (801/3611)
回答No.1

>>税込価格を小数点切り捨てで出力しなさいという問題 切り捨ててないから

sus-sus
質問者

お礼

つまりどういうことですか? 出力したものは切り捨てになってるように見えるのですが その辺の説明をお願いします

すると、全ての回答が全文表示されます。

関連するQ&A