Java中保留小数点的方法_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java中保留小数点的方法

Java中保留小数点的方法

 2017/8/17 0:31:17  lintaozhou  程序员俱乐部  我要评论(0)
  • 摘要:今天测试测出消息传递过程中有个小数精确度有问题。要求保留小数点6位,不够的用0补充,结果开发时没注意,0.123456格式控制后变成了.123456,虽然从的值的角度来说没有区别,但是下游收到消息的人不认。。。。。。总结了以下常见的四舍五入方法:publicstaticvoidmain(String[]args){System.out.println(getNum(0.23656,"#.0000",false));//.2365不四舍五入,整数部分为0时省略System.out.println
  • 标签:方法 Java

今天测试测出消息传递过程中有个小数精确度有问题。

要求保留小数点6位,不够的用0补充,结果开发时没注意,0.123456格式控制后变成了.123456,虽然从的值的角度来说没有区别,但是下游收到消息的人不认。。。。。。

总结了以下常见的四舍五入方法:

class="java" name="code">public static void main(String[] args) {
		
		System.out.println(getNum(0.23656,"#.0000",false));//.2365 不四舍五入,整数部分为0时省略
		System.out.println(getNum(0.23656,"0.0000",false));//0.2365不进行四舍五入,整数部分为0时不省略
		System.out.println(getNum(0.23656,"0.0000",true));//0.2366 进行四舍五入 
		System.out.println(getNum(0.236,"0.0000",true));//0.2366 进行四舍五入  不够的小数部分补零
//		
//		System.out.println(getNum2(0.23456,3));//精确小数点第三位,四舍五入
		
		//System.out.println(getNum3(0.2345,3,false));//0.234
		
//		System.out.println(getNum4(0.2345,3,false));//0.234
//		System.out.println(getNum4(0.2345,3,true));//0.235
//		System.out.println(getNum4(0.23,3,false));//0.23 没有补零
	}
	
	
	public static String getNum(double str,String pattern,boolean flag){
		DecimalFormat format = new DecimalFormat(pattern);//保留小数点三位
		if(flag) {
			format.setRoundingMode(RoundingMode.UP);//进行四舍五入
		} else {
			format.setRoundingMode(RoundingMode.DOWN);//不进行四舍五入
		}
		return format.format(str);
	}
	
	
	public static String getNum2(double str , int decima) {
		long n = 1;
		for(int i = 1 ; i <= decima; i++ )
			n *= 10;
		return String.valueOf((int)(str * n +0.5) / (n * 1.0));
	}
	
	
	public  static double getNum3(double str,int point, boolean flag){
		BigDecimal   b   =   new   BigDecimal(str); 
		if(flag) {
			return b.setScale(point,  BigDecimal.ROUND_HALF_UP).doubleValue();
		} 
		return b.setScale(point,  BigDecimal.ROUND_HALF_DOWN).doubleValue();
	}
	
	
	
	public static String getNum4(double d,int point,boolean flag) {
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(point); // 保留小数点位数
        if(flag){
        	 nf.setRoundingMode(RoundingMode.UP);//四舍五入
        }else {
        	 nf.setRoundingMode(RoundingMode.DOWN);// 不四舍五入
        }
        return nf.format(d);
    }
	

?

发表评论
用户名: 匿名