昨晚看书,书中有这样一句代码:System.out.println(2.00-1.10); //数据结果理论上因为0.90控制台结果理论上因为0.90,但实际输出确实:0.8999999999999999!
我以为是没有声明为DOUBLE类型的原因,就把代码改了下但是结果还是一样:double num_1 = 2.00;
double num_2 = 1.10;
System.out.println(num_1-num_2);
看书中的解释,因为是英译中(我都怀疑是用GOOGLE翻译的),有点晦涩!
所以在这里求牛人!
我以为是没有声明为DOUBLE类型的原因,就把代码改了下但是结果还是一样:double num_1 = 2.00;
double num_2 = 1.10;
System.out.println(num_1-num_2);
看书中的解释,因为是英译中(我都怀疑是用GOOGLE翻译的),有点晦涩!
所以在这里求牛人!
解决方案 »
- 通迅问题
- Can't read input file
- 想对后台线程多些了解...
- 一个全英文的JAVA题,有人会做吗??
- 用什么方法判断文件已修改?
- getToolkit().getImage("mypic.jpg")中的图片要放到哪儿
- 请各位说说jar的用法?
- 请问怎样解决用SOCKET()客户端连接时出现的java.security.AccessControlException: access denied (java.net.SocketPermission 192.168
- =?gb2312?B?0eDQx87l1MK5pNf3vMa7rjIwMDEuZG9j?=
- 这是我在调试WEBLOGIC的DBPOOL是抛出的异常,是什么原因呀?
- 冒泡排序优化
- jar包无法运行
需要在计算中不含有任何舍入误差,就应该使用BigDecimal类。
将一个类标记为strictfp ,那么这个类中的所有方法都要使用严格的浮点数计算,
将一个方法标记为strictfp,那么这个方法就会使用严格的浮点数计算,
public static strictfp void main(String [] args)
double num_1 = 2.00;
double num_2 = 1.10;
System.out.println((num_1*1000-num_2*1000)/1000);输出 0.9
我们以后在计算的时候是用bigdecimal还是用double呢!或者说转换成整数计算!
int j = (int) Math.round(d * 10); // 小数点后两位前移,并四舍五入
double k = (double) j / 10.0; // 还原小数点后两位
就好了
就好了
就好了