[英]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-16
是0.0000000000000001110223
另一種表示法。
通常,將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.