我想知道,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吗?
我想重新表述你的问题
假设a和b为两个整数,a>=ba是a的二重表示,db则是b。
是否可能da<数据库?
答案是否定的。
如果da<db则db的双重表示,其误差低于da,这是由于IEEE-754标准而不可能的。
因此,您的问题的答案也是NO,并且foo
总是返回true。