我知道在现代计算机系统中执行的浮点运算并不总是与实际运算一致。我正在尝试设计一个小型 C# 程序来演示这一点。例如:
static void Main(string[] args)
{
double x = 0, y = 0;
x += 20013.8;
x += 20012.7;
y += 10016.4;
y += 30010.1;
Console.WriteLine("Result: "+ x + " " + y + " " + (x==y));
Console.Write("Press any key to continue . . . "); Console.ReadKey(true);
}
但是,在这种情况下,x
和y
到底是相等的。
我是否可以使用类似复杂性的程序来证明浮点运算的不一致性,而不使用任何真正疯狂的数字?如果可能的话,我想避免数学上正确的值超过小数点几位。