decimalformat 3.155无法四舍五入?

DecimalFormat df4 = new DecimalFormat("######.00"); 

df4.setRoundingMode(RoundingMode.HALF_UP);//网上都是说加这一行代码 
double s = 3.155; 
System.out.println(df4.format(s));//输出还是3.15
//jdk版本:1.8.291

 

 

RoundingMode.CEILING:取右边最近的整数

RoundingMode.DOWN:去掉小数部分取整,也就是正数取左边,负数取右边,相当于向原点靠近的方向取整

RoundingMode.FLOOR:取左边最近的正数

RoundingMode.HALF_DOWN:五舍六入,负数先取绝对值再五舍六入再负数

RoundingMode.HALF_UP:四舍五入,负数原理同上

RoundingMode.HALF_EVEN:这个比较绕,整数位若是奇数则四舍五入,若是偶数则五舍六入

 

package com.csdn;

import java.math.BigDecimal;
import java.math.RoundingMode;
/**
 * 
 * @作者:Roc-xb
 * @联系QQ:327844761
 * @微信公众号:ewbang
 *
 */
public class Test01 {

	public static void main(String[] args) {
		double s = 3.155; 
		System.out.println(round5(String.valueOf(s)));

	}

	public static String round5(String str) {
		BigDecimal bigDecimal = new BigDecimal(str);
		return String.valueOf(bigDecimal.setScale(2, RoundingMode.HALF_UP));
	}

}

如有帮助,望采纳。点击我回答右上角【采纳】按钮。