【发布时间】:2018-11-01 19:06:44
【问题描述】:
我正在阅读 Nutshell 书中的 C#,它显示了这张表:
我很难理解这张桌子。它说 double 占用64 bits 的空间,范围从10^-324 到10^308。
十进制占用128 bits 的空间但也表示它的范围从10^-28 到10^28。那么我在这里的理解是十进制占用更多空间但提供更短的范围?这在我的脑海中没有多大意义,因为每个人都同意在需要精度时应该使用小数。
同样,在进行像 = (1/3)*3 这样的计算时,期望的结果是1,但只有float 和double 给我1,decimal 给我0.9999... 那为什么是@987654336 @ 更精确?我真的不明白。
【问题讨论】:
-
粗略地说,小数点右边的位数越多,精度越高。您在小数点右侧跟踪的数字越多,您在小数点左侧的数字就越少。小数点两边都需要适合128位(小数的情况下)。
-
它的精度不是更高,而是不同。它可以精确地存储十进制数字,并且当您习惯于将这些视为真实值时,它似乎更精确。如果你习惯二进制数,double 会。
标签: c# floating-point double decimal