用数字保证精度?

时间:2016-12-13 20:46:55

标签: c# floating-point double precision

我知道由于存储浮点数的方式,有些值无法准确表示。 (见Why Are Floating Point Numbers Inaccurate?

话虽如此,在.NET / C#中,在精度方面有哪些选择或保证? https://msdn.microsoft.com/en-us/library/b1e65aza.aspx?f=255&MSPPError=-2147217396指的是"近似"范围。为什么在这种背景下需要近似值?

最终,我希望存储以下值:

x.xxxxxxxx

其中值始终为正。这似乎不是一个非常精确的数字,但我想确定上面所有可能的数字组合都是耐用的。"

修改

为了澄清我想要的精确水平,我希望小数点后面有八位数字,左边是一位数字。

2 个答案:

答案 0 :(得分:4)

听起来你正在寻找decimal

从链接:

  

精确28-29位有效数字

     

近似范围(粘贴不会给出指数的格式等等,所以只需查看链接。)

答案 1 :(得分:1)

  

在精确度方面有哪些选择或保证

基于doc,Wikipedia float的精度为7位有效十进制数字

类似于1234567或1.234567或0.0000001234567

  

为什么在这种情况下需要近似值

因为它不准确。 IEEE 754浮点值为(2 - 2-23)×2127≈3.402823×10 ^ 38

虽然您可能会得到一个像3.4028239999×10 ^ 38这样的数字,但最后5位数字(99999)不可信任