技術評論社より出版の、「C言語による最新アルゴリズム事典」(奥村晴彦著)の「四捨五入」の項目について質問です。
「a >= 0, b > 0の2整数について、a / bを四捨五入で小数第一位までに丸める方法」が以下のように書かれています。
整数型変数rを使って、
r = (10 * a + b / 2) / b;
printf("a / b = %d.%d\n", r / 10, r % 10);
rには、結果の小数a.bが10 * a + bの形に入ることになるのでしょうが、何故そうなるのかわかりません。
どうかご教授ください。m(__)m
No.1ベストアンサー
- 回答日時:
このアルゴリズムの目的は、割り算による誤差をなくすことです。
そのため、整数演算をメインにしています。
実数で四捨五入するなら、
floor(10.0*a/(double)b+0.5)/10.0
でしょう。これを、割り算を後回しにすると、
floor((10.0*a+0.5*b)/b)/10.0
となりますね。これを整数演算にしたものが提示された式です。
(10*a)%b+b/2がb以上であれば(10*a+b/2)/bは(10*a)/b+1となります。この仕組みで四捨五入が実現されています。
bが奇数の場合、b/2の余りが捨てられてしまいますが、(10*a)%bが(b+1)/2以上でないと切り上げる必要がないので、問題ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 四捨五入について。 23 2023/02/19 14:40
- 小学校 がい数の問題の文章の意味 4 2022/11/21 14:25
- 教育学 エクセルで小数点以下を四捨五入について教えてください。 2 2023/04/05 17:33
- 数学 右の図で、BCの長さを四捨五入して、 小数第1位まで求めなさい。 図は三角形ABCで、∠Aが50度、 3 2022/07/28 01:17
- 数学 5組のデータ (xx,yy) = (1.0 , 1.1), (2.0 , 1.0), (3.0 , 2 2023/01/09 16:52
- 数学 数学『データの分析』 √22を少数にする際 「4.6904…」だったので 4を四捨五入し0を切り捨て 5 2023/03/03 12:59
- 統計学 解き方が分かるくて質問しました。 連続型確率分布 f(x) = 3/4(1 − x^2), − 1 2022/07/21 22:48
- 高校 x,yを正の数とする。x,3x+2yを少数第一位で四捨五入すると、それぞれ6,21になるという。yの 1 2023/04/05 23:32
- 計算機科学 (1)の最後の足し算なんですけど4.9+14.7はどちらも小数第一位なので答えは19.6かなと思った 3 2023/08/11 19:47
- 統計学 155.2、164.4といった数字で平均値を出す場合は、その数字を四捨五入で整数にしてから÷個数で求 13 2022/10/12 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
COBOLの計算方法
-
5%割引の際の、小数点以下の扱...
-
50銭以下切り捨て51銭以上切...
-
小数点 第n位 を切り上げ,切り捨て
-
今投稿して解決したのですが 更...
-
ADOで算術型のRound関数を使いたい
-
Access 1000以下を切り捨てる関数
-
ACCESSの切り上げ
-
四捨五入について
-
四捨五入をするプログラムの書...
-
エクセルでの小数点以下切り捨...
-
消費税計算について
-
端数処理における「小数以下」...
-
四捨五入するときの関数は
-
数字の double 型 を int型...
-
なぜ消費税10%は×1.1なのですか...
-
法人税・消費税修正申告納付の仕訳
-
高速料金を請求する場合の消費...
-
1個あたりの製産時間を算出した...
-
消費税の勘定科目は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
5%割引の際の、小数点以下の扱...
-
COBOLの計算方法
-
駐車場賃料の日割り計算について
-
エクセルでの小数点以下切り捨...
-
今投稿して解決したのですが 更...
-
Access 1000以下を切り捨てる関数
-
Excel有効数字の丸め方「0捨1入」
-
端数処理における「小数以下」...
-
負の数の四捨五入の方法
-
勤務の稼働時間の計算がわかり...
-
数字の下二桁を削除したい
-
数字の double 型 を int型...
-
50銭以下切り捨て51銭以上切...
-
次の計算式を使って、 利益率12...
-
ADOで算術型のRound関数を使いたい
-
雇用保険料の計算式について(E...
-
あなたの得意な言語、知ってい...
-
切捨てする関数はありますか?
-
excel関数で四捨五入以外の切り...
-
切り捨てて百の位までのがい数...
おすすめ情報