XNA上的浮点精度

时间:2013-01-11 12:50:59

标签: c# visual-studio-2010 xna floating-point-precision

我正在使用Visual Studio 2010 Ultimate,正在研究.Net框架4。

Precision issue

来自XNA框架的groundControlPointworldPosition的类型为Vector2

我知道每个调试器都使用自己的精度管理,但这个问题使我的代码无效。 我想比较我对给定浮点值的加法(在我的例子中是5166.28003 ..),但由于我的加法结果是5166.28027,它总是错误的......

有关如何理解的提示?

2 个答案:

答案 0 :(得分:1)

作为stated in MSDNfloat的精度只有7位......

  

float类型可以表示从大约1.5×10E-45到3.4×10E38的值,精度为7位。

在您的情况下,您处理的值为5166.28003,因此只能精确到小数点后三位。

如果您需要更高的精度,请考虑使用double(精度为15-16位)或decimal(通常用于财务和货币计算)。

答案 1 :(得分:1)

float仅精确到7位数。从MSDN查看。

  

浮点类型可以表示大约1.5倍的值   10-45到3.4×1038,精度为7位。

decimal类型看起来更适合您的情况。

  

十进制类型是128位数据类型,适用于财务和   货币计算。十进制类型可以表示值范围   从1.0×10-28到大约7.9×1028,28-29显着   位数。