簡體   English   中英

為什么使用double.Parse然后轉換為浮點數?

[英]Why use double.Parse and then cast to a float?

我在一些我正在研究的代碼中看到了這個:

num1 = (float)double.Parse(parameters[i + 1]);
num2 = (float)double.Parse(parameters[i + 2]);

想知道為什么他們不會只使用float.Parse而不是double.Parse並且轉換為float 有充分的理由嗎?

有充分的理由嗎?

是。 如果參數很大,上面的代碼將引發OverflowException ,但代碼只需要max值為float max的值。

有充分的理由嗎?

並不是的。 這里的主要區別是:

  1. 一點額外的開銷(這當然對任何方式都沒有好處)

  2. 如果值超出單個范圍可表示的范圍,則可能存在異常。

一般來說,這可能應該直接使用Single.Parse

如果您嘗試使用此代碼,您將看到如果該數字太大而無法使用float表示,則會引發異常,但是當從double轉換為float時,將不會有任何異常。 數字將是無限的。 親自嘗試一下:

string numString = "23339823498723948723958734956283468237468273468274602983409283.4092834092834029834029384029834";
            double num2 = double.Parse(numString);
            float num3 = (float)num2;
            float num1 = float.Parse(numString);

也許有人會在第一時間預料到這種行為。 盡管如此,我會使用try catch而不是這種方法。

暫無
暫無

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

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