1

Visual Studio 2010 Ultimateを使用しており、.NetFramework4で作業しています。

精度の問題

groundControlPointおよびのタイプworldPositionVector2、XNAフレームワークからのものです。

すべてのデバッガーが独自の精度管理を使用していることは知っていますが、この問題によりコードが機能しなくなります。加算を特定のfloat値(私の場合は5166.28003 ..)と比較したいのですが、加算結果が5166.28027であるため、常に間違っています...

それを理解するためのヒントはありますか?

4

2 に答える 2

1

MSDNに記載されているようにfloat、精度はわずか7桁です...

このfloatタイプは、約1.5×10E-45から3.4×10E38の範囲の値を7桁の精度で表すことができます。

あなたの場合、あなたが扱っている値はです5166.28003。したがって、小数点以下第3位までしか正確ではありません。

より高い精度が必要な場合は、double(15〜16桁の精度)またはdecimal(通常、財務および金銭の計算に使用されます)の使用を検討してください。

于 2013-01-11T12:54:27.557 に答える
1

float正確さは7桁です。から見てくださいMSDN

フロートタイプは、約1.5×10−45〜3.4×1038の範囲の値を7桁の精度で表すことができます。

decimalタイプはあなたの状況により良く見えます。

10進型は、財務および金銭の計算に適した128ビットのデータ型です。10進タイプは、1.0×10-28から約7.9×1028の範囲の値を、有効数字28-29で表すことができます。

于 2013-01-11T12:55:10.763 に答える