我將2097151.3
賦值給float變量,應用程序僅打印整數部分。可能的錯誤?.NET核心浮點變量不打印小數點
public static void Main(string[] args)
{
float foo = 2097151.3F;
Console.WriteLine(foo); // prints 2097151
Console.ReadKey();
}
我正在運行.NET Core控制檯應用程序。
我將2097151.3
賦值給float變量,應用程序僅打印整數部分。可能的錯誤?.NET核心浮點變量不打印小數點
public static void Main(string[] args)
{
float foo = 2097151.3F;
Console.WriteLine(foo); // prints 2097151
Console.ReadKey();
}
我正在運行.NET Core控制檯應用程序。
沒有。自20世紀40年代以來,浮點數已經出現了。 A float
只對7位有效數字非常有用。
的最近float
到2097151.3
爲2097151.25
,並WriteLine
是足夠聰明的知道這一點,所以相應地截斷。
如果要精確十進制值,請使用decimal
類型。
所以問題是爲什麼'WriteLine'截斷值,如果我實際上是'2097151.25'。 – HimBromBeere
@HimBromBeere:因爲「笑話」數字是不相關的,C#是明智的。如果必須的話,你可以調整信息以產生所有的數字。 – Bathsheba
如果一個浮點數(我的浮點數爲2097151.3)只能存儲7個數字(2097151),爲什麼你要說2097151.25? – Joe
請訪問https://msdn.microsoft.com/en-us/library/b1e65aza.aspx查看精度規格 - 僅有7位數 – rbm
[浮點數學是否被破壞?](http://stackoverflow.com)/questions/588004/is-floating-point-math-broken) – HimBromBeere