Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么double.Parse会忽略零的符号?_C# - Fatal编程技术网

C# 为什么double.Parse会忽略零的符号?

C# 为什么double.Parse会忽略零的符号?,c#,C#,例如,在: bool eq = (1 / double.Parse("-0.0")) == (1 / -0.0); eq将为false double.Parse要显式忽略零的符号需要经历一些麻烦,即使不这样做几乎不会导致问题。 因为我需要原始表示,所以我必须编写自己的解析函数,该函数在特殊情况下为负零,并对其他所有内容使用double.Parse 这不是什么大问题,但我真的很想知道为什么他们决定忽略零的符号,因为在我看来,不这样做并不是一件坏事。有区别: double.Parse(“-0.0”

例如,在:

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”。

    我不知道为什么,但是一个潜在的解决方案是:如果您在开头看到一个
    -
    字符,请解析字符串的其余部分,然后对其求反。

    为什么需要零的符号?IEEE 754指出,
    +0==-0
    毕竟。你的代码示例如何不引发DivideByZeroException?@Donal:因为我需要以字节为单位的原始表示,这是不同的@FishBasketGordo:因为在IEEE 754浮点中被零除是合法的且定义良好的。@Fish:处理浮点类型时不会引发该异常。MSDN上是这样写的。这是因为CLR包含COMNumber::NumberBufferToDouble()中的代码,如果指数和尾数均为零,则无论符号如何,该代码都会显式将结果设置为0。你不能改变它。当然可以,试着把
    (1/-0.0)
    改成
    (1/0.0)
    -结果会是
    真的
    你在想NaN吗?@harold:奇怪,不,我还以为它对无穷远也不起作用。(这没道理)但你说得对,谢谢+∞ 不等于-∞ 在任何现代数学解释中…