1

我正在使用 Visual Studio 2010 Ultimate,在 .Net 框架 4 上工作。

精度问题

groundControlPoint和的类型worldPositionVector2,来自 XNA 框架。

我知道每个调试器都使用自己的精度管理,但是这个问题使我的代码无法正常工作。我想将我的加法与给定的浮点值(在我的情况下是 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

float 类型可以表示范围从大约 1.5 × 10−45 到 3.4 × 1038 的值,精度为 7 位。

decimaltype 看起来更适合您的情况。

十进制类型是适用于金融和货币计算的 128 位数据类型。十进制类型可以表示从 1.0 × 10−28 到大约 7.9 × 1028 的值,有效数字为 28-29。

于 2013-01-11T12:55:10.763 回答