一段简单的代码:
public static void main( String[] args ) {
double value = Double.valueOf( "-9223372036854775808" );
System.out.println( value );
long l = ( long ) Math.rint( value );
System.out.println( l );
}
运行结果是:
-9.223372036854776E18
-9223372036854775808
疑问: -9.223372036854776E18不是9.223372036854776×10的18次方
为什么后面还会变成 -9223372036854775808 不懂
因为浮点数有二进制转换误差,所以两者有一点点差别是正常的。
这种大数的处理建议使用BigDecimal
实际的值没有变,只是在输出的时候被截取了
就是实际的值没有变,只是在输出的时候被截取了 ,
还有 这样的问题有啥意义吗?
谁会用一个long类型的数据搞成double ??
虽然实际值没变,但是看到的还变了,没任何的好处啊 — —