2010-06-15 26 views
1

我碰到這個代碼在一些現有的代碼庫傳來:這有沒有什麼理由不是冗餘代碼?

double rad = ComputeCurviness(); 
double off = Math.Abs(rad); 
if (rad < 0) off = -off; 

這似乎是基本上只是讓off等於rad。這些變量在代碼後面可以互換使用。有沒有任何理由離開這個代碼?

+0

借調。 – tbranyen 2010-06-15 19:38:50

+2

不,但'雙關'和'雙弧'真棒。 – 2010-06-15 19:39:19

+3

......突然之間,我的頭真的很疼。 – 2010-06-15 19:40:51

回答

6

如果rad爲-0.0,off將爲+0.0。你必須檢查代碼,看看這是否會有所作爲。這兩者在計算和比較時是等價的,但-0.0是負值,如果您足夠努力,您可以檢測到這一點。

+3

誰是如此的沮喪,甚至*零*必須表示爲負面? – 2010-06-15 19:48:24

+0

+1 Ack,我在考慮異常值時忘了檢查+/- 0。很好的接收。我發佈了示例代碼來區分+/- 0以迴應另一個問題:http://stackoverflow.com/questions/104381​​6/how-to-get-a-0-result-in-floating-point-calculations-and - 區分它從0/1043909#1043909 – Brian 2010-06-15 20:00:25

+0

@Anthony:IEEE 754 – Brian 2010-06-15 20:24:10