解決済み

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

  • 困ってます
  • 質問No.9580110
  • 閲覧数94
  • ありがとう数6
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 66% (4/6)

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

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

  • 回答No.4

ベストアンサー率 60% (884/1465)

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

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

お礼率 66% (4/6)

ありがとうございました
投稿日時 - 2019-01-22 06:52:03
たいせつな将来のこと。あえて、知らない人に聞いてみよう。

その他の回答 (全3件)

  • 回答No.3

ベストアンサー率 48% (4382/8998)

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

intにキャストして、整数化するといいでしょう。
お礼コメント
sus-sus

お礼率 66% (4/6)

さようなら
投稿日時 - 2019-01-22 06:49:39
  • 回答No.2

ベストアンサー率 48% (4382/8998)

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

お礼率 66% (4/6)

どうすれば切り捨てになりますか?
%.0fだと切り捨てだと思ってたのですが四捨五入なんですね
投稿日時 - 2019-01-21 23:14:53
  • 回答No.1

ベストアンサー率 18% (110/611)

>>税込価格を小数点切り捨てで出力しなさいという問題
切り捨ててないから
お礼コメント
sus-sus

お礼率 66% (4/6)

つまりどういうことですか?
出力したものは切り捨てになってるように見えるのですが
その辺の説明をお願いします
投稿日時 - 2019-01-21 22:58:31
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ