我碰到这个代码在一些现有的代码库传来:这有没有什么理由不是冗余代码?
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