-2

私のプログラムでは、特定の数値の現在の合計があり、メインの前にフロートとして宣言されて普遍的になり、反復ごとにフロートを加算および減算します。

これらの float は、常に 0 から 10 までの小数点以下 1 桁までの数値です。ただし、合計は、この 1.dp の精度から 0.01 (つまり、2.4 を 15.9 に加算して 18.31 を取得) することがあります (非常にまれですが、何十億回もの反復を扱っています)。

このわずかな逸脱がプログラムのクラッシュにつながる可能性があるため、それを軽減する方法はありますか?

4

2 に答える 2

4

小数点以下 1 桁が常にある場合は、すべての数値に 10 を掛けて、整数演算を使用してください。一般に、2 進浮動小数点は 10 進数の小数値を表すことはできません。2 進浮動小数点数で計算を行うと、小さな誤差が拡大されます。整数で計算を行うことは正確です。

于 2013-10-01T19:37:03.403 に答える
3

0.1は 2 進数では繰り返し 10 進数であるため、正確に表すことはできません。10計算には整数と倍数を使用するのが最適です。

于 2013-10-01T19:36:14.587 に答える