关于java double的一个疑问,请求大侠解答

一段简单的代码:
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 ??

虽然实际值没变,但是看到的还变了,没任何的好处啊 — —