這沒有任何意義。在溢位或被零除的情況下,.NET 應拋出例外或至少回傳錯誤代碼或布林值(如 TryParse)。我想很多人都會同意,很難預料一個框架會回傳無窮大。這是因為在計算機科學中沒有真正稱為無窮大的東西(它將如何在記憶體中表示!)。此外,我真的不能用它做任何事情,我不能將它用作另一個方程的輸入。發生此問題是由于導致呼叫 Math.Log(0) 的錯誤。
我在這里想念什么?
https://docs.microsoft.com/en-us/dotnet/api/system.double.isinfinity?view=net-6.0
uj5u.com熱心網友回復:
您有兩種不同的情況:
- 當結果是某種整數或時
decimal,將拋出DivideByZeroException例外:
嘗試將整數或小數值除以零時引發的例外。(粗體是我的)
// DivideByZeroException
long v = 123L / 0L;
// DivideByZeroException
decimal d = 456m / 0m;
- 當 result 是某種浮點數時,不會拋出例外,并且有3 種可能的結果
Inf, NaN, -Inf::
// Positive Infinity
double Positive = 123.0 / 0.0;
// NAN - Not A Number
double NotNumber = 0.0 / 0.0;
// Negative Infinity
double Negative = -456.78 / 0.0;
如果Math.Log()我們處理引數和結果的浮點值 ( double),這就是為什么
Math.Log(0.0) == double.NegativeInfinity
還要注意
Math.Log(-1.0) == double.NaN
是很自然的實作;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/389222.html
