2010-06-15 5 views
1

я наткнулся на этот код в некоторых существующих кодовую:Есть ли причина, по которой это не избыточный код?

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

Это, как представляется, в основном просто сделать off равным rad. Переменные используются взаимозаменяемо позже в коде. Есть ли причина оставить этот код?

+0

Вторичный. – tbranyen

+2

Нет, но 'double off' и' double rad' являются удивительными. –

+3

... внезапно, моя голова действительно болит. –

ответ

6

Если rad -0,0, off будет +0,0. Вам нужно будет проверить код, чтобы увидеть, действительно ли это имеет значение. Эти два эквивалентны, когда речь идет о вычислениях и сравнениях, но -0.0 является отрицательным, что вы можете обнаружить, если достаточно стараетесь.

+3

Кто был такой неудачник, что даже * ноль * должен был быть выражен как отрицательный? –

+0

+1 Ack, я забыл проверить +/- 0, думая о выбросах. Хорошо поймал. Я разместил образец кода, чтобы различать +/- 0 в ответ на другой вопрос: http://stackoverflow.com/questions/1043816/how-to-get-a-0-result-in-floating-point-calculations-and -distinguish-it-from-0/1043909 # 1043909 – Brian

+0

@ Энтони: IEEE 754 – Brian

Смежные вопросы