我碰到這個代碼在一些現有的代碼庫傳來:這有沒有什麼理由不是冗餘代碼?
double rad = ComputeCurviness();
double off = Math.Abs(rad);
if (rad < 0) off = -off;
這似乎是基本上只是讓off
等於rad
。這些變量在代碼後面可以互換使用。有沒有任何理由離開這個代碼?
我碰到這個代碼在一些現有的代碼庫傳來:這有沒有什麼理由不是冗餘代碼?
double rad = ComputeCurviness();
double off = Math.Abs(rad);
if (rad < 0) off = -off;
這似乎是基本上只是讓off
等於rad
。這些變量在代碼後面可以互換使用。有沒有任何理由離開這個代碼?
如果rad
爲-0.0,off
將爲+0.0。你必須檢查代碼,看看這是否會有所作爲。這兩者在計算和比較時是等價的,但-0.0是負值,如果您足夠努力,您可以檢測到這一點。
誰是如此的沮喪,甚至*零*必須表示爲負面? – 2010-06-15 19:48:24
+1 Ack,我在考慮異常值時忘了檢查+/- 0。很好的接收。我發佈了示例代碼來區分+/- 0以迴應另一個問題:http://stackoverflow.com/questions/1043816/how-to-get-a-0-result-in-floating-point-calculations-and - 區分它從0/1043909#1043909 – Brian 2010-06-15 20:00:25
@Anthony:IEEE 754 – Brian 2010-06-15 20:24:10
借調。 – tbranyen 2010-06-15 19:38:50
不,但'雙關'和'雙弧'真棒。 – 2010-06-15 19:39:19
......突然之間,我的頭真的很疼。 – 2010-06-15 19:40:51