
あるC言語の問題で答えを「小数第二位まで正確に 出力してください」とありました
他の正解を貰った回答者の解答を見ると
printf("%.2f\n", n);
と出力してprintfで小数点を調整してるだけでした。
(nの値はまだ四捨五入していない状態)
1
これは問題文の「正確に」に対して正しいものなのでしょうか?
2
自分でnに値を代入してやってみましたが
0.225を出力すると0.23で確かに四捨五入
0.125を出力すると0.12と切り捨てになります
これどういうものなのかも良くわかりません
この説明もお願いします
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
0.125は浮動小数点で正確に誤差なく表せる数ですが
0.12となるのは偶数丸め(Nearest to Even)を採用しているからです。
C99で規定している標準の丸め方法のひとつ。
#丸め方法はC99では複数の方法から選べる
#規定値は決まって無かったと思うけど
#たいていは偶数丸め。
偶数丸め、銀行家の丸め などで検索してみましょう。
因みにC99では丸め方法として四捨五入は採用していません。
またJISでも四捨五入は非推奨、偶数丸めを推奨しています。
No.7
- 回答日時:
プログラムの世界では
「小数」が「正確」に表現できるとは限らない
というのが常識です.
それを前提にすると
そもそも「正確」とはどういうことですか?
という疑問が出てくるのは当然だと思いますよ.
ちなみに
round(n*100)/100
にしろ
(double)(int)(n*100+0.5) /100
にしろ, 負の数がからむといわゆる四捨五入にはならないことがありえますね. まあ「四捨五入ってなんだ」っていわれるとやっぱり困るんだけど.
No.6
- 回答日時:
整数型以外は全て誤差を含んでいると理解していいと思います。
「小数第二位まで正確に 出力してください」
というのであれば、1000倍して整数にして、下1桁を四捨五入するのではダメですか?
>0.125を出力すると0.12
代入した0.125を1000倍して125になっているか確認してみてください。
回答有り難うございます
round(n*100)/100
or
(double)(int)(n*100+0.5) /100(
こうすれば学校で習うところの小数点第3位の四捨五入が「正確」に出せ少数第2位が出ますよね?
まだ中学生なのでその辺よくわからないのですがプログラミングの世界では正確にというのは学校で習う正確とはちがうのですか
「正確」にで少し混乱してしまいました
No.5
- 回答日時:
#4 の補足要求に
4. どのようなプログラムで確かめたのですか
も入れておきましょうか.
ちなみに「小数第二位まで正確に 出力してください」自体に複数の解釈がありえるし, 仮に四捨五入としても複数の方法があるので
正確な意図を確認する
のが最も適切だと思いますよ. それが面倒なら
自分の解釈を示したうえでその解釈に対して適切なプログラムを示す
のもありえますが, その場合には
出題者の気分で「ダメ」とされても文句はいいにくい
ので注意が必要ですね.

No.4
- 回答日時:
>自分でnに値を代入してやってみましたが
>0.225を出力すると0.23で確かに四捨五入
>0.125を出力すると0.12と切り捨てになります。
補足要求です。
1.nの型はなんですか。doubleですかfloatですか。どちらでしょうか。
2.コンパイラは何でしょうか。gccですかvisual studioですか。それとも、なにか他のものでしょうか。
3.OSはwindowsですか。それともlinuxですか。
No.3
- 回答日時:
>言葉遊びのレベルということ?
いや、言葉遊びではないですけど
>意味がわからないような問題では問題として意味をなさなくないですか?
はい、だからこの問題を出されたら私はまず
「正確に」とはどういう意味ですか?と質問しますね
No.2
- 回答日時:
>これは問題文の「正確に」に対して正しいものなのでしょうか?
「正確に」の定義が少数第二位以降の数字を絶対に表示せずに
という意味なら正しいのでは
問題文だけでは「正確に」というのが何を示しているのかがわからないです
>これどういうものなのかも良くわかりません
https://www.cc.kyoto-su.ac.jp/~yamada/programmin …
非常にややこしい部分の話しです
詳しいことは「浮動小数点」「丸め誤差」など
ご自身で検索して調べたほうが良いと思います
とりあえずイメージしやすいように
分かりやすいように以下のURLの実行結果を見てください
https://wandbox.org/permlink/mATyXJ7zti5HJ4wV
0.225という数字をコンピュータでは正確に表すことができないことがわかると思います
コレが精度の問題です
>「正確に」の定義が少数第二位以降の数字を絶対に表示せずにという意味なら正しいのでは
>問題文だけでは「正確に」というのが何を示しているのかがわからないです
え?
言葉遊びのレベルということ?
意味がわからないような問題では問題として意味をなさなくないですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 統計学 データサイエンスの問題 1 2023/01/22 20:16
- 数学 至急!次の問題を教えてください。 ある市では、消防車の出動要請が平均して1時間当たり1回ある。 多く 2 2022/11/18 20:25
- 統計学 母集団分布を平均 μ, 分散 σ2 の正規分布と想定し, 母集団から無作為抽出した標本のデータ(標本 4 2023/01/30 20:25
- 統計学 統計学の問題です。教えてください(_ _) 数万人の有権者がいる選挙区で, 無作為に400人の標本を 2 2023/02/03 15:27
- 数学 高校の数学Bの、確率分布と統計的な推測の、 正規分布の問題でわからない箇所がございます。問題文が、 2 2022/03/27 20:57
- 統計学 統計学の問題 1 2022/10/09 20:01
- 工学 電気回路の問題の質問 6 2022/05/22 07:20
- 工学 (1)抵抗値が30(Ω)のニクロム線がある。これにある電圧を加えて消費電力を測定したところ300(W 1 2022/11/07 14:35
- 工学 (1)抵抗値が30(Ω)のニクロム線がある。これにある電圧を加えて消費電力を測定したところ300(W 1 2022/11/07 14:12
- 高校 x,yを正の数とする。x,3x+2yを少数第一位で四捨五入すると、それぞれ6,21になるという。yの 1 2023/04/05 23:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
coutで出力した文字を消去する...
-
クリップボードからの貼り付け...
-
テキストファイルから特定の文...
-
軽いデータで出力
-
配列からポインタを使って長さ...
-
VBAを使って1レコードごとに・...
-
Aviutlの連番BMP出力方法
-
MMDでavi出力が出来ない
-
プログラミングの問題です。至...
-
フォートランで出力をタブ区切...
-
C#について質問【足し算】
-
HDMI出力とUSBでの通信が同時に...
-
MAXIMAの入力式をLaTeX形式で表...
-
外部出力できるワンセグ携帯っ...
-
TV出力ポートをOFFにすれば良い...
-
Excel VBAのDictionaryでリスト...
-
PIC16F1827のAD変換 PIC初心者...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
PD充電器について
-
cout と cerrの違い
-
スマホ充電器購入にあたり
-
Accessのテーブルからcsv出力す...
-
MMDでavi出力が出来ない
-
printfとputcharの違いは
-
VBAのExecメソッドで画面を非表...
-
TV出力ポートをOFFにすれば良い...
-
COBOLのMOVEで桁数が異なる場合
-
VBAでテキスト出力時のスペース...
-
ACCESS クエリ→フォーム...
-
coutで出力した文字を消去する...
-
4種類(A4縦、A4横、A3縦、A3横)のヘ...
-
Windows Formアプリからコンソ...
-
コンセントの電力は入力と出力...
-
C#でアクセス権限の取得方法が...
-
【VBA】PDFを2in1で出力したいです
おすすめ情報
2の結果を見る限り正確な四捨五入ではないように思いますが「正確に」という質問に対して正解を出しています。
その辺を説明お願いします