Art*_*kov 29 java double integer
这段代码
Double dbl = 254.9999999999999;
Integer integ = dbl.intValue();
System.out.println(integ);
Run Code Online (Sandbox Code Playgroud)
显示254,但更多一个"9"
Double dbl = 254.99999999999999;
Integer integ = dbl.intValue();
System.out.println(integ);
Run Code Online (Sandbox Code Playgroud)
它已经是255 ..为什么?
ass*_*ias 30
要知道double的确切值,可以使用BigDecimal:
System.out.println(new BigDecimal(254.9999999999999));
System.out.println(new BigDecimal(254.99999999999999));
Run Code Online (Sandbox Code Playgroud)
打印:
254.9999999999998863131622783839702606201171875
255
Run Code Online (Sandbox Code Playgroud)
所以这仅仅是因为(双重精度的限制)......
Mar*_*nik 13
System.out.println(254.9999999999999 == 255.0);
System.out.println(254.99999999999999 == 255.0);
Run Code Online (Sandbox Code Playgroud)
版画
false
true
Run Code Online (Sandbox Code Playgroud)
这应该给你一个提示.该double类型最多可以表示16位有效数字,并且您的文字具有17.因此,double最接近第二个十进制文字的值是255.0.
对于第二行代码,Eclipse实际上会发出警告:
比较相同的表达式
因为已经是编译器知道这些只是完全相同double值的两个文字的事实.