C#代码:
double value = 3.40282347E+38;
Console.WriteLine(value / 2);
给出不同的值(C#给出1.70141173319264E + 38和C#没有花车给我1.701411735e + 38)我。
当我使用c#代码时:
{{1}}
我和浮子一样。 MSDN错了吗?
Dot Net Fiddle
float.MaxValue是3.40282347E + 38。
Float MaxValue
答案 0 :(得分:2)
摆弄我发现了
当Console.WriteLine(((3.40282347E+38 / 2) == (float.MaxValue / 2)).ToString());
打印False
时,Console.WriteLine(((3.40282347E+38f / 2) == (float.MaxValue / 2)).ToString());
打印True
。这是因为语言是这样做的:
By default, a real numeric literal on the right side of the assignment operator is treated as double
您的号码是double
,您将其与float
进行比较,因此默认情况下精度不同。您必须通过在其末尾添加float
来强制将该数字设为f
。