簡體   English   中英

為什么C#的float.MaxValue精度比允許的精度高?

[英]Why is c#'s precision for float.MaxValue more than it lets on?

C#代碼:

double value = float.MaxValue;
Console.WriteLine(value / 2);

給出不同的值(C#給1.70141173319264E + 38,而沒有浮點數的C#給我1.701411735e + 38)me。

當我使用C#代碼時:

double value = 3.40282347E+38;
Console.WriteLine(value / 2);

我和花車一樣。 MSDN錯誤嗎?

點網提琴
float.MaxValue是3.40282347E + 38。
浮動最大值

擺弄我發現Console.WriteLine(((3.40282347E+38 / 2) == (float.MaxValue / 2)).ToString()); Console.WriteLine(((3.40282347E+38f / 2) == (float.MaxValue / 2)).ToString()); False 打印True 這是因為該語言執行此操作:

默認情況下,賦值運算符右側的實數值文字被視為double

您的數字是double精度數,並且正在將其與float進行比較,因此默認情況下精度不同。 您必須通過在數字末尾加上f來強制數字為float

暫無
暫無

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

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