我要将一个数字保留两位小数,四舍五入,用科学记数发展示,程序如下
double number = Double.parseDouble(50.545);
DecimalFormat formatter = new DecimalFormat(",##0.00");
String convert = formatter.format(number);
按理说结果应该是50.55,但得到的结果确实50.54,不知道是什么原因,是那个地方的精度出现了问题,望大侠指点一下,谢谢!
double number = Double.parseDouble(50.545);
DecimalFormat formatter = new DecimalFormat(",##0.00");
String convert = formatter.format(number);
按理说结果应该是50.55,但得到的结果确实50.54,不知道是什么原因,是那个地方的精度出现了问题,望大侠指点一下,谢谢!
Math.round(b);
好像是这个函数吧(四舍五入)
是因为double类型本身不能做精确计算
System.out.println(number.setScale(2, BigDecimal.ROUND_HALF_UP));
*
* @param value 要四舍五入的值
* @param scale 小数点后要取的位数
* @return
*/
public static double round(double value,int scale){
BigDecimal bd=new BigDecimal(value);
BigDecimal divisor=new BigDecimal(1);
BigDecimal returnValue=bd.divide(divisor, scale,BigDecimal.ROUND_HALF_UP );
return returnValue.doubleValue();
}
0.545可能是0.5449999999之类的表示了