java double类型保留小数和四舍五入

本文介绍了使用Java处理浮点数运算的多种方法,包括利用BigDecimal进行精确计算、通过Math.round进行四舍五入处理、使用DecimalFormat进行格式化输出以及通过字符串截取保留指定小数位数。
摘要由CSDN通过智能技术生成

建议方法:用Bigdecimal来处理浮点数的加减

例如:

 import java.math.BigDecimal;
import  java.util.*;
 public class Main
 {
	 public static void main(String ags[])
	 {
		  Scanner cn=new Scanner(System.in);
		  double t=0.011115;
		  double r=0.012222;
		  BigDecimal q=new BigDecimal(String.valueOf(t) );
		  BigDecimal w=new BigDecimal(String.valueOf(r)); 
		  System.out.println(q.add(w).setScale(4,BigDecimal.ROUND_HALF_UP  ));
		  /*q.multiply(w); 乘法
		  q.abs();  
		  q.divide(w);  除法
		  q.subtract(w);  减法*/
		  //通过转化成bigdecimal的一个实例,然后可以加减乘除,通过setScale方法,第一个参数数设置保留的位数
		  //第二个参数是保留的形式  BigDecimal.ROUND_HALF_UP 是4舍5入比较常用
		  
		  		  
		  //还有如下的保留方式,但是不常用
		  /*setScale(1)表示保留一位小数,默认用四舍五入方式 
		  setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
		  setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
		  setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
		  setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍*/		 
	 }
 }



方法一:通过四舍五入方式保留特定后几位

import java.util.*;
public class Main
{
public static void main(String args[])
{
double t=1.123456;
System.out.println((double)Math.round(t*100000)/100000);   //5个零
}
}     

输出:1.12346(四舍五入了)

说明:这种方式通过强制输出double类型,同时注意这里有乘上几个零就是保留几个小数。如果改成Math.round(t*100)/100,这样就会输出1.12


方法二:通过四舍五入保留小数

import java.util.*;
import java.text.DecimalFormat;

public class Main {

    public static void main(String[] args) {
       double t=1.123456;
       System.out.println(new DecimalFormat("0.0000").format(t)); //英语中:Decimal---十进制的  Format----格式化
    }
}
输出:1.1235

说明:这是调用了text.DecimalFormat,在输出时候,将数字格式化了,其实(“0.0000”)就是格式的模版,输出4个小数,会自动四舍五入,改成(“0.0”)就会输出1.1,改成(“00.000”)会自动补位输出01.123


方法三:通过四舍五入保留小数

import java.util.*;

public class Main {

    public static void main(String[] args) {
    	double t = 1.123456;
    	String str = String.format("%.4f", t);
    	System.out.println(str);
       
    }
}
输出:1.1234

说明:通过转换成字符串的方式输出小数点后几位,其中的(“%4f”)就是控制的输出的小数点的位数要求



方法四:不四舍五入保留小数

import java.util.*;

public class Main {

    public static void main(String[] args) {
    	double t = 1.123456;
    	String str = String.valueOf(t);
    	String str2="";
    	for(int i=0;i<6;i++)
    		str2=str2+str.charAt(i);
    	System.out.println(str2);
    }
}
输出:1.1234

说明:本质就是强制转化成字符串,然后进行字符串的截取工作


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值