相关疑难解决方法(0)

将浮点值的相等性检查为0是否安全?

我知道你不能正常依赖双重或十进制类型值之间的相等,但我想知道0是否是特殊情况.

虽然我可以理解0.00000000000001和0.00000000000002之间的不精确,但0本身似乎很难搞砸,因为它什么都没有.如果你对什么都不精确,那就不再是什么了.

但我对这个话题知之甚少,所以我不能说.

double x = 0.0;
return (x == 0.0) ? true : false;
Run Code Online (Sandbox Code Playgroud)

这会永远回归真实吗?

.net c# floating-point precision zero

97
推荐指数
5
解决办法
7万
查看次数

比较C#中的double值

我有一个double名为的变量x.在代码中,x获取一个值,0.1我在'if'语句中检查它,比较x0.1

if (x==0.1)
{
----
}
Run Code Online (Sandbox Code Playgroud)

不幸的是它没有进入if声明

  1. 我应该使用Doubledouble

  2. 这背后的原因是什么?你能为此建议一个解决方案吗?

.net c# double

59
推荐指数
6
解决办法
9万
查看次数

除以零返回无穷大

我是编程的新手,我有一个除零的问题.代码中的注释中解释了问题.

public float Divide (float a, float b)
{
    if (!Equals (b, 0))
        return a / b;
    else
        return 0; // what should this return contains not to giving me back  infinite?
                  // But for example message that you can't divide by zero?
}
Run Code Online (Sandbox Code Playgroud)

c# divide-by-zero

2
推荐指数
1
解决办法
1443
查看次数

为什么这个问题的结果不同?

我遇到了以下算术问题.

但结果与正常的数学运算不同,为什么会这样呢?

double d1 = 1.000001;

double d2 = 0.000001;

Console.WriteLine((d1-d2)==1.0);
Run Code Online (Sandbox Code Playgroud)

c# floating-point floating-accuracy

1
推荐指数
1
解决办法
1578
查看次数