浮点算术大于或等于



我想知道,c#中的浮点数是否会给出关于更大或相等的错误结果。

static bool foo()
{
    Random r = new Random();
    int i = r.Next(int.MinValue, int.MaxValue), 
        j = r.Next(int.MinValue, int.MaxValue), 
        k = r.Next(int.MinValue, int.MaxValue), 
        l = r.Next(int.MinValue, int.MaxValue);
    BigInteger b1 = new BigInteger(i) * j, b2 = new BigInteger(k) * l;
    double d1 = (double)i * j, d2 = (double)k * l;
    return (b1 >= b2 && d1 >= d2) || (b1 <= b2 && d1 <= d2);
}

更具体地说,foo会返回false吗?

我想重新表述你的问题
假设ab为两个整数,a>=baa的二重表示,db则是b

是否可能da<数据库

答案是否定的。
如果da<dbdb的双重表示,其误差低于da,这是由于IEEE-754标准而不可能的。

因此,您的问题的答案也是NO,并且foo总是返回true。

相关内容

  • 没有找到相关文章

最新更新