みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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;
}

投稿日時 - 2019-01-21 22:00:54

QNo.9580110

困ってます

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

%.0fは四捨五入とは限りません。
この処理でC言語自体に規定はなかったはずで、ieee754ルールで処理している事例が多いだけという状況だったはずです。

浮動小数点の小数点以下切り捨てはfloor関数を使って下さい。
四捨五入はround関数、切り上げはceil関数です。
切り捨て手段として整数型に変換するのはやりがちな手段ですが、指定の整数型が持てる値の範囲がコンパイルターゲットやコンパイラに依存するという別の問題を抱える事になるので、目的が整数型に変換するのでない限りお勧めしません。

投稿日時 - 2019-01-22 03:41:28

お礼

ありがとうございました

投稿日時 - 2019-01-22 06:52:03

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

> どうすれば切り捨てになりますか?

intにキャストして、整数化するといいでしょう。

投稿日時 - 2019-01-22 01:47:40

お礼

さようなら

投稿日時 - 2019-01-22 06:49:39

ANo.2

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

投稿日時 - 2019-01-21 23:11:57

お礼

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

投稿日時 - 2019-01-21 23:14:53

ANo.1

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

投稿日時 - 2019-01-21 22:29:06

お礼

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

投稿日時 - 2019-01-21 22:58:31

あなたにオススメの質問