0

重複の可能性:
数値をより正確にファイルに書き込む - C++

として緯度/経度の値を保存している間double、私はトリムされた数字を含む変数になってしまいます.47.279229の場合は47.2792、8.424317の場合は8.42432です.操作 - たとえば、0.01098901098 を 47.279229 に追加し、精度を損なうことなく新しい変数として保存するなど -? setprecisionストリームに対してこれを処理しますが、変数/数学の対応物として機能する方法をまだ見つけていません。

4

1 に答える 1

2

doubleは内部的に[通常]バイナリ浮動小数点として格納されます。一般に、10進値は、2進浮動小数点値を使用して正確に表すことはできませんが、元の10進値は正確に復元できることがよくあります(末尾のゼロの正しい数を除く)。計算を行うとき、元の値に近い値が操作されるため、追加のエラーが発生します。10進数の小数をに変換しdouble、これらの値を使用して計算し、それらを元に戻すと、期待される結果に近い値が得られますが、正確ではありません。

処理する小数桁の最大数がわかっている場合は、元の値に適切な10の累乗を掛けて、計算に整数演算を使用できます。値を表示するには、適切な場所に小数点を挿入するだけです。

于 2012-10-02T19:30:01.233 に答える