Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 Visual Studio 2010 Ultimate,在 .Net 框架 4 上工作。
groundControlPoint和的类型worldPosition是Vector2,来自 XNA 框架。
groundControlPoint
worldPosition
Vector2
我知道每个调试器都使用自己的精度管理,但是这个问题使我的代码无法正常工作。我想将我的加法与给定的浮点值(在我的情况下是 5166.28003 ..)进行比较,但由于我的加法结果是5166.28027,它总是错误的......
5166.28027
关于如何理解的任何提示?
如MSDN中所述,float精度仅为 7 位...
float
该float类型可以表示范围从大约 1.5 × 10E−45 到 3.4 × 10E38 的值,精度为 7 位。
在您的情况下,您正在处理的值是5166.28003,因此只能精确到小数点后 3 位。
5166.28003
如果您需要更高的精度,请考虑使用double(15-16 位精度)或decimal(通常用于财务和货币计算)。
double
decimal
float仅精确到 7 位。从 看MSDN。
MSDN
float 类型可以表示范围从大约 1.5 × 10−45 到 3.4 × 1038 的值,精度为 7 位。
decimaltype 看起来更适合您的情况。
十进制类型是适用于金融和货币计算的 128 位数据类型。十进制类型可以表示从 1.0 × 10−28 到大约 7.9 × 1028 的值,有效数字为 28-29。