単純化された問題:
float0.02275
があり、それを小数点以下 4 桁に丸めると、予想される代わりに が0.0228
得られ0.0227
ます。の浮動小数点値0.02275
が のようなもの0.0227499999999999...
で、小数点以下 4 桁に丸めると が得られるため、これが発生することがわかっています0.0227
。
float a = 0.02275;
NSLog(@"float a is %f",a);
NSLog(@"float a, rounded to 4 decimal places is %0.4f",a);
NSLog(@"float a, rounded to 10 decimal places is %0.10f",a);
出力を与える
float a is 0.022750
float a, rounded to 4 decimal places is 0.0227
float a, rounded to 10 decimal places is 0.0227499995
私の質問は、これを正しく丸めて0.0228
の代わりに取得するにはどうすればよい0.0227
ですか?
実際の状況の制限:
float は plist ファイルから取得されます。NSNumber floatValue
variable に代入する際に使用されますa
。
私のプログラムはお金とパーセンテージを扱っています。金額の値はユーザー入力であり、パーセンテージは固定値またはユーザー入力のいずれかです。上記の例のフロートは、私の計算で不正確な原因となっているパーセンテージ値の 1 つです。