【发布时间】:2015-09-14 04:23:09
【问题描述】:
为什么转换回来会给出 -ve 表达式?
float f = long.MaxValue;
Console.WriteLine("long to float: {0}",f);
Console.WriteLine("long Max: {0}",long.MaxValue);
Console.WriteLine("float to long casting: {0}",(long)f);
//Console.WriteLine("converting float to long: {0}",Convert.ToInt64(f));
//Above statement gives OverflowExection as expected.
输出:
long to float: 9.223372E+18
long Max: 9223372036854775807
float to long casting: -9223372036854775808
同样,long.MinValue 给出了正确的结果。
【问题讨论】:
-
@txtechhelp:第一个链接中的提问者不知道积分和浮点在内存中的表示方式,而第二个链接中的提问者希望获得浮点类型的精确值。但是我的问题的背景不同。如果浮点数没有给出确切的值,但它没有给出负值...?
-
您没有转换为 long。你正在铸造很长。嗯,这有点不同!
-
是的,这是显式转换,我也尝试过转换......结果相同。添加到问题中。
-
float f = long.MaxValue; Console.WriteLine(Convert.ToInt64(f)); System.OverflowException:算术运算导致溢出。
标签: c# floating-point type-conversion long-integer