Подтвердить что ты не робот

Почему double.Parse игнорирует знак нуля?

Например, в:

bool eq = (1 / double.Parse("-0.0")) == (1 / -0.0);

eq будет false.

double.Parse придется столкнуться с некоторыми неприятностями, чтобы явно игнорировать знак для нуля, даже если это не делает, что почти никогда не приводит к проблеме. Поскольку мне нужно необработанное представление, мне пришлось написать свою собственную функцию синтаксического анализа, которая в случае особых случаев отрицательна и использует double.Parse для всего остального.

Это не большая проблема, но мне действительно интересно, почему они приняли решение игнорировать знак нуля, потому что мне кажется, что делать это не будет плохо.

4b9b3361

Ответ 1

Я не знаю о том, почему сам по себе, но потенциальное решение: если вы видите символ - в начале, проанализируйте остальную часть строки и затем отрицайте ее.

Ответ 2

Есть разница:

  • double.Parse( "- 0.0" ) = 0, 1/0 → INF

  • 1/-0.0 → -INF

Но оператор минус в заявлении 2 не означает "-0.0".