我希望我已经对此进行了足够的研究,以使我的前提并非完全偏离基础。如果是这样,那么那里的数学家可以让我直截了当。
我的前提是一个Double
值12.5
应该四舍五入到 5 个有效数字(不是小数位)为12.500
. 相反,使用以下 C# 代码,我得到12.5
:
Double d = 12.5;
Console.WriteLine(d.ToString("G5"));
我从 2007 年开始看到这篇文章,这似乎与我的问题相呼应。事实上,我使用这些示例数字只是为了保持一致。
我的目标是更好地理解以下内容:
我对 sig figs 的理解在数学上是否正确?即,我的期望是否合理,或者输出“12.5”是否正确?
这真的是框架中的一个(非常长期存在的)错误吗?如果是这样,可以/会修复吗?
假设这是一个错误,我现在该怎么办?写一个 hack 来确定你实际上得到了多少 sig figs然后填充它?滚动我自己的代码来做“G”格式字符串应该做的事情?我已经在 SO 上遇到过这样的例子,所以这也许是不存在干净选项的证据。
此外,我确实意识到存储问题Double
可能会对这个问题的舍入方面产生负面影响,但目前,我只关心 sig figs 比原始数字更多的问题。
编辑:我已经测试到框架 4.5。