2016-09-29 94 views
1

我想分割一些值,並想知道如果其中一個值是0或最好的方法來檢查。通常我使用類似好的方法來避免DivideByZero異常

var somevar = (somevalue1 != 0 || somevalue2 != 0)?somevalue1/somevalue2:0; 

我得查了很多價值,以便在想,如果有這樣做的更好,更聰明的方法。

+0

你總是可以創建一個方法 - 那麼你只能在一個地方做檢查。 – PaulF

+0

你不需要檢查'somevalue1'是否爲0,用0除以某物當然是合法的。 *除以* 0不是。 –

回答

4

您只需要檢查分母以防止被零除。

所以

var somevar = somevalue2 != 0 ? somevalue1/somevalue2 : 0;

是好得多,假設0是個不錯的默認值。

0

有沒有辦法檢查,沒有異常處理從你身邊。 這在數學上可能不是正確的方式,它是資源消耗,但只是對於信息:你總是可以使用浮點值,然後將它們切成整數。

「由於浮點類型基於IEEE 754,所以浮點算術溢出或被零除以不會拋出異常,因此具有表示無窮大和NaN(非數字)的規定。(微軟)

所以你可以很容易地檢查後,如果你有沒有例外的DivideByZero(通過無限常量)。應該更具可讀性。

// This will return "true". 
bool isIninity = Double.IsInfinity(3.0/0) ? "true" : "false"); 
+0

希望你不要介意,我編輯你的帖子,通過刪除「真」和「假」字符串進行編譯。我本可以刪除雙引號。 – KSib