我一直在试图找出如何确定双值是否为-0.0d。我搜索了一下这个问题,找到了一些不同的方法,但是我找到的所有线程都至少有几年的历史了,并且似乎不再工作了。
到目前为止,我尝试过的是:
double x, y;
x = 0;
y = -0;
println(x == y);
println(Double.compare(x, y) == 0);
println(new Double(x).equals(new Double(y)));
println(Double.doubleToLongBits(x) == Double.doubleToLongBits(y));
println(Math.signum(x) == Math.signum(y));不幸的是,所有这些打印的true。
如果您想知道,我需要区分0和-0,原因是我试图从用户输入中解析一个双值,并在出现异常时使用-0作为哨位值。
发布于 2016-10-08 14:59:23
您的问题是您使用的是y = -0而不是y = -0.0。0是一个整数字,没有-0 int值,它只保留0,然后加宽 to +0.0d.You也可以在否定之前使用-(double)0进行扩展,得到与-0.0相同的结果。
https://stackoverflow.com/questions/39933792
复制相似问题