簡體   English   中英

在C#中將double轉換為float,給出錯誤的值

[英]Converting double to float in C# giving wrong values

問題很簡單。 我有一個雙人,我想轉換為浮動。

double doubleValue = 0.00000000000000011102230246251565;
float floatValue = (float)doubleValue;

現在,當我這樣做。 浮動價值只是瘋了。 它的值是“ 1.110223E-16 ”我是否需要為此流量做一些額外的事情。 值應為0或0.1,但不在此處。 這有什么問題?

double轉換為float肯定會失去精度。 但值1.110223E-16是指數表示法,即上升到冪-16,這意味着它類似於0.0000000000000001110223

您應該使用Math.Round()來舍入數字。

浮子非常好。 它表示double的值,直到float的精度。

1.110223E-160.0000000000000001110223另一種表示法。

Double雙精度浮點數,float單精度浮點數

通常,將Double轉換為float時可能會損失精度。 1.110223E-16等於0.0000000000000001110223因為它代表。

如果要將最接近的數字舍入為值,可以使用Math.Round()方法。

將值舍入為最接近的整數或指定的小數位數。

看看浮點指南

浮子能夠以完美的精度表示大約6個有效數字 這與我認為你假設的6 位小數不一樣。

實際上它給出了正確的價值。

轉換為float后如何擺脫指數

double doubleValue = 0.00000000000000011102230246251565;
float result = (float)doubleValue;
decimal d = Decimal.Parse(result.ToString(), System.Globalization.NumberStyles.Float);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM