
仮に double 型 の ある数字を 12.6 とします。
printf関数を使って .0f で表示する時は 小数点を四捨五入されて 、整数地が1繰り上がり13と表示されます。
ここである数字をキャスト演算子を使ってprintfで表示すると小数点を切り捨てられるので12と表示されます。
これはdouble型では 12.6 がはいっていて int型では12がはいっているから起こる現象ですね。
前置きは長く長くなりましたがdouble型で四捨五入される数字を、int型にした時に1繰り上げる簡単な方法はないものでしょうか?
double a = 12.6;
int b = ( int ) a;
if( a - ( double ) b > 0.4444444444 ){
b++;
}
printf( "%d\n" , b );
こういう方法なら一応出来ない事はないですがもっと簡単な方法はありませんか?
後、私は時間が余りないので時間内に回答がなければ返信が来週になります。
申し訳ありません。
答えていただいた方はありがとうございます。
No.6
- 回答日時:
四捨五入というか、まるめというか、目的によって使い分ける必要があります。
(1) 経済学的な分野では、負の値はマイナス方向に四捨五入した方が実感として良いと思います。
例えば、4.51万円の借金、つまりは-4.51万円は四捨五入によって-5万円にした方が-4万円にするよりも実感として良いわけです。
(2) 画像処理のような分野では、見た目が自然になる方が良いわけです。
例えば、x1=4.5とx2=-4.5の距離は実際には4.5-(-4.5)=9.0です。でも四捨五入によってx1=5、x2=-5にしてしまうと、計算上5-(-5)=10になってしまいます。この場合は-4.5は四捨五入によって-4にした方が距離は保たれて見た目に自然な結果になります。つまりこの場合はプラス方向に四捨五入することになります。
従って負の値をプラス、マイナスのどちら方向に四捨五入するかは分野によって使い分ける必要が出てきます。
No.5
- 回答日時:
>if( a - ( double ) b > 0.4444444444 ){
なぜ0.4444444444を使っているのか根拠が不明です。
根本的な解決策になっていません。
No.3
- 回答日時:
double 型のある数字が、
正のときは、+0.5 してから int にキャストする。
負のときは、-0.5 してから int にキャストする。
a += ( a < 0.0 ) ?-0.5 : 0.5;
printf( "%d\n", (int)a );
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
5%割引の際の、小数点以下の扱...
-
雇用保険料の計算式について(E...
-
勤務の稼働時間の計算がわかり...
-
50銭以下切り捨て51銭以上切...
-
駐車場賃料の日割り計算について
-
端数処理における「小数以下」...
-
COBOLの計算方法
-
今投稿して解決したのですが 更...
-
負の数の四捨五入の方法
-
ACCESSの切り上げ
-
Excel有効数字の丸め方「0捨1入」
-
四捨五入できますか?
-
数字の下二桁を削除したい
-
重量の丸め計算が全く分からず...
-
四捨五入するときの関数は
-
エクセルでの小数点以下切り捨...
-
accsseのクエリについて
-
法人税・消費税修正申告納付の仕訳
-
なぜ消費税10%は×1.1なのですか...
-
何が矛盾しているのかわからない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
5%割引の際の、小数点以下の扱...
-
駐車場賃料の日割り計算について
-
今投稿して解決したのですが 更...
-
Access 1000以下を切り捨てる関数
-
切り捨てて百の位までのがい数...
-
端数処理における「小数以下」...
-
勤務の稼働時間の計算がわかり...
-
Excel有効数字の丸め方「0捨1入」
-
雇用保険料の計算式について(E...
-
負の数の四捨五入の方法
-
COBOLの計算方法
-
50銭以下切り捨て51銭以上切...
-
数字の下二桁を削除したい
-
次の計算式を使って、 利益率12...
-
エクセルでの小数点以下切り捨...
-
重量の丸め計算が全く分からず...
-
ADOで算術型のRound関数を使いたい
-
excel関数で四捨五入以外の切り...
-
ACCESSの切り上げ
-
VBの小数点周り
おすすめ情報