[英]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的值。
有充分的理由嗎?
並不是的。 這里的主要區別是:
一點額外的開銷(這當然對任何方式都沒有好處)
如果值超出單個范圍可表示的范圍,則可能存在異常。
一般來說,這可能應該直接使用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.