2010-06-15 71 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