double是2进制的所有在计算的时候用误差。将a换为bigdecimal就可以解决这个问题。或者利用11. /** * 将一个double型的进行四舍五入(小数点后两位) * @param i * @return */ public static double moneyTran(double i) { if (i >= 0.0D) i += 9.9999999999999995E-008D; else i -= 9.9999999999999995E-008D; String str = (new DecimalFormat("################.##")).format(i); i = Double.parseDouble(str); return i; } 这个程序进行舍入。后结果也会是正确的
* 将一个double型的进行四舍五入(小数点后两位)
* @param i
* @return
*/
public static double moneyTran(double i) {
if (i >= 0.0D)
i += 9.9999999999999995E-008D;
else
i -= 9.9999999999999995E-008D;
String str = (new DecimalFormat("################.##")).format(i);
i = Double.parseDouble(str);
return i;
}
这个程序进行舍入。后结果也会是正确的