【发布时间】:2014-01-08 21:20:22
【问题描述】:
我用c#写了一个程序
static void Main(string[] args)
{
float c = 1.111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111F;
double d = 1.111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111F;
Console.WriteLine(d);
Console.WriteLine(c);
Console.WriteLine(c == d);
Console.Read();
}
输出是:
1.11111116409302
1.111111
True
所以,问题:
为什么它的输出是true
请帮助我理解这一点,谢谢!
【问题讨论】:
-
c 是十进制数的浮点近似值。 d 是该浮点数到 double 的转换。作为比较的一部分,c 被转换为 double。您正在将浮点近似值与特定十进制数的双重转换进行比较,因此结果当然是正确的。