浮点算法大于或等于

时间:2016-05-07 15:55:52

标签: c# floating-point precision biginteger floating-accuracy

我想知道,如果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吗?

1 个答案:

答案 0 :(得分:0)

我想重新提一下你的问题 假设 a b 为两个整数 a&gt; = b da a 的双重表示, db b 的双重表示。

是否有可能 da&lt;分贝

答案是否定的。
如果 da&lt; db 然后 db a 的双重表示,误差低于 da ,由于IEEE-754而无法实现标准。

因此,您的问题的答案也是foo始终返回true。