我想知道,如果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吗?
答案 0 :(得分:0)
我想重新提一下你的问题 假设 a 和 b 为两个整数 a&gt; = b 。 da 是 a 的双重表示, db 是 b 的双重表示。
是否有可能 da&lt;分贝强>
答案是否定的。
如果 da&lt; db 然后 db 是 a 的双重表示,误差低于 da ,由于IEEE-754而无法实现标准。
因此,您的问题的答案也是否,foo
始终返回true。