日期:2014-05-20  浏览次数:20837 次

java中一个通过除法获得了一个3位小数乘以100后变成了16为小数
  
  double avarage = percent/cpus.size();
  avarage = Math.round(avarage*1000)*1.0/1000;
  System.out.println(avarage);
  System.out.println(avarage*100.0);?

偶尔出现,
求解释
------解决方案--------------------
用BigDecimail 
------解决方案--------------------
嗯。正常。二进制和十进制相互转换的时候,会产生数据误差。
(要想保存确定精度的浮点数,用1楼的方法就可以解决问题。)
所以,在金融软件里面,存储货币的时候,都在用整数,单位是分,而不是元。
包括魔兽世界里面,存储货币用的单位也是铜元,而不是金元,或银元。