gpt4 book ai didi

c# large doubles 比较

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:22 24 4
gpt4 key购买 nike

首先让我说这不是关于小数精度公差比较的问题!这更多是大 double 的固有表示的问题,因为在一定范围之后,计算机开始失去有效的精度,而不是在小数点。例如

double d1 = 1e20+8000;
double d2 = 1e20;
Debug.WriteLine(d1 == d2);

现在这会产生 true,这对我来说是非常 Not Acceptable 。在项目中此时转换为十进制是不可能的。有没有一种方法可以减轻这种情况,例如以某种方式计算,在 ^20 处,计算机表示数字 ^20 +- 8000 相同?对于高于此指数的公差似乎是 8000,它会触发正确的比较,但我需要精确比较到小数点,除此之外我不关心大数。

最佳答案

Now this yields true which for me is very unacceptable.

然后你应该使用一个数据类型来做你想要的。当您期望准确性时,您永远不应该使用浮点精度数字。 decimal 是你应该使用的。

更改数据类型是您长期有效的唯一选择。如果您不想去那里,没有任何选项不需要大量工作来检查所做的计算。

关于c# large doubles 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52366041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com