bool eq = (1/double.Parse("-0.0")) == (1/-0.0);
eq
將false
。
double.Parse
將不得不經過一些麻煩來顯式忽略零符號,即使不這樣做,幾乎從不會導致問題。 因爲我需要原始表示,所以我不得不編寫自己的解析函數,該函數特殊情況爲負零並且使用double.Parse
表示其他所有情況。
這並不是一個大問題,但我真的好奇他們爲什麼會做出忽略零標記的決定,因爲在我看來,不這樣做並不是壞事。
bool eq = (1/double.Parse("-0.0")) == (1/-0.0);
eq
將false
。
double.Parse
將不得不經過一些麻煩來顯式忽略零符號,即使不這樣做,幾乎從不會導致問題。 因爲我需要原始表示,所以我不得不編寫自己的解析函數,該函數特殊情況爲負零並且使用double.Parse
表示其他所有情況。
這並不是一個大問題,但我真的好奇他們爲什麼會做出忽略零標記的決定,因爲在我看來,不這樣做並不是壞事。
有區別:
double.Parse( 「 - 0.0」)= 0,1/0 - > INF
1/-0.0 - > -INF
但是語句2中的負運算符並不意味着「-0.0」。
爲什麼你需要零的符號?畢竟,IEEE 754聲稱「+0 == -0」。 –
你的代碼示例如何不拋出DivideByZeroException? – FishBasketGordo
@Donal:因爲我需要以字節爲單位的原始表示,而且它不同。 @FishBasketGordo:因爲IEEE 754浮點除零是合法的並且定義明確。 – harold