为什么返回float.Parse()没有小数位错误的结果?

时间:2017-11-06 09:01:54

标签: c# .net

float.Parse("534818068")

返回:534818080

我知道浮点数和小数值有很多并发症。但也许有人可以向我解释这种行为。

谢谢!

2 个答案:

答案 0 :(得分:1)

浮点数具有相对精度,即7或8位数。因此,只有前7位或8位数字是正确的,与数字的实际总大小无关。

答案 1 :(得分:0)

浮点数使用IEEE 754标准(符号,偏差指数和分数)在内部存储。

float个数字以32位表示形式存储,这意味着它们的精度为7位数。 另一方面,double以64位表示形式存储,因此具有15-16位数(source)。

这就是为什么你不应该通常比较浮点数是否相等。