我要将一个数字保留两位小数,四舍五入,用科学记数发展示,程序如下
double number = Double.parseDouble(50.545);
DecimalFormat formatter = new DecimalFormat( ",##0.00 ");
String convert = formatter.format(number);
按理说结果应该是50.55,但得到的结果确实50.54,不知道是什么原因,是那个地方的精度出现了问题,望大侠指点一下,谢谢!
------解决方案--------------------
BigDecimal number = new BigDecimal( "50.545 ");
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();
}