【发布时间】:2010-04-15 17:13:27
【问题描述】:
我了解在现代计算机系统中执行的浮点运算并不总是与实际运算一致。我正在尝试设计一个小型 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 最终是相等的。
我是否可以使用类似复杂性的程序来证明浮点运算的不一致性,而不使用任何真正疯狂的数字?如果可能的话,我想避免数学上正确的值超出小数点几位。
【问题讨论】:
-
3/3 != (1/3)*3?我不确定这是否是您正在寻找的,以及它是否真的产生了预期的1 != 0.999999...
标签: c# floating-point double-precision