Ответ 1
Я не знаю о том, почему сам по себе, но потенциальное решение: если вы видите символ -
в начале, проанализируйте остальную часть строки и затем отрицайте ее.
Например, в:
bool eq = (1 / double.Parse("-0.0")) == (1 / -0.0);
eq
будет false
.
double.Parse
придется столкнуться с некоторыми неприятностями, чтобы явно игнорировать знак для нуля, даже если это не делает, что почти никогда не приводит к проблеме.
Поскольку мне нужно необработанное представление, мне пришлось написать свою собственную функцию синтаксического анализа, которая в случае особых случаев отрицательна и использует double.Parse
для всего остального.
Это не большая проблема, но мне действительно интересно, почему они приняли решение игнорировать знак нуля, потому что мне кажется, что делать это не будет плохо.
Я не знаю о том, почему сам по себе, но потенциальное решение: если вы видите символ -
в начале, проанализируйте остальную часть строки и затем отрицайте ее.
Есть разница:
double.Parse( "- 0.0" ) = 0, 1/0 → INF
1/-0.0 → -INF
Но оператор минус в заявлении 2 не означает "-0.0".