double类型数值比较的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了double类型数值比较的坑相关的知识,希望对你有一定的参考价值。

double类型的数据不能直接用==比较

需要用包装类型的方法比较:

//如果 d1 和 d2 是double类型
if ( Double.doubleToLongBits(d1) == Double.doubleToLongBits(d2) )

//f1 和 f2 是d2是float类型
if( Float.floatToIntBits(f1) == Float.floatToIntBits(f2) )

这两个是native方法

public static native long doubleToRawLongBits(double var0);

public static native double longBitsToDouble(long var0);

以上是关于double类型数值比较的坑的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.Double.compare()

java.lang.Double.compare()

Java盲点攻克「数值浮点数精度系列」Double与Float的坑与解决办法以及BigDecimal的取而代之!

踩过的坑

java中两个Double型数据可以用(>,<,==,>=,<=)进行比较吗? 请详细说明

数值的整数次方