gpt4 book ai didi

c# - 为什么当我将 double 与零进行比较时 Resharper 会提示?

转载 作者:IT王子 更新时间:2023-10-29 04:43:31 24 4
gpt4 key购买 nike

如果我这样做

double d = 0;
if (d == 0) {
...
}

Resharper 在比较 d == 0 时提示“ float 与相等运算符的比较。舍入值时可能会丢失精度。”

为什么?将精确的零表示为 double 或 float 不是很难吗?

我知道如果我与一些其他值(例如 0.2 没有精确的二进制表示)进行比较,这样的警告将是相关的。

最佳答案

Resharper 不分析 double 变量是如何取值的。

经过几次计算后, double 值很少是精确的,因此 resharper 警告您将 double 值与精确值进行比较并不是一个好主意。

double x = Math.Sqrt(2);
double d = x * x;

Console.WriteLine(d == 2);

关于c# - 为什么当我将 double 与零进行比较时 Resharper 会提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684365/

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