【发布时间】:2014-08-01 01:02:23
【问题描述】:
我想在 C# 中比较两个双精度数 a 和 b(例如 b 有更多小数位):如果我将数字 b 舍入到 @ 的小数位数987654326@ 如果它们相同,我应该得到相同的数字。示例:
double a = 0.123;
double b = 0.1234567890;
应该是一样的。
double a = 0.123457
double b = 0.123456789
应该是一样的。
我不会写
if(Math.Abs(a-b) < eps)
因为我不知道如何计算精度eps。
【问题讨论】:
-
你在决定小数位数吗?
-
您的示例可能设置错误。。
a已经“四舍五入”到与b相同的小数位数,因为b具有更高的精度...所以我'不太确定你在问什么。 -
双精度不包括有效数字的概念。它使用了它所拥有的所有精度。考虑例如
double a = 1.030; -
@entropic 我编辑了这个问题。
-
这似乎更像是一个关于有效数字的问题。此页面可能会有所帮助:Formatting numbers with significant figures in C#
标签: c# precision double-precision