java 千分位 保留小数_java BigDecimal 添加千位分隔符,保留几位小数

含格式的都是String类的:比如添加千位分隔符的,转换为百分数格式的

1.使用DecimalFormat类,会返回String类型

import static org.junit.Assert.*;

import java.math.BigDecimal;

import java.math.RoundingMode;

import java.text.DecimalFormat;

import org.junit.Test;

public class BigDecimalTest {

/**

* 使用DecimalFormat类 返回String类型

*/

@Test

public void BigDecimalFormatTest() {

//0 一个数字 ; # 一个数字,不包括 0

//保留两位小数,如果不足两位小数则自动补零

DecimalFormat df1 = new DecimalFormat("###0.00") ;

df1.setRoundingMode(RoundingMode.HALF_UP);

System.out.println(df1.format(124.3));

System.out.println(df1.format(124.315)); //费解 没有四舍五入

System.out.println(df1.format(124.325)); //费解 实现四舍五入

//保留两位小数,不足两位则不补零

DecimalFormat df2 = new DecimalFormat("###0.##") ;

System.out.println(df2.format(124.6));

System.out.println(df2.format(124));

//保留两位小数,哪里不足位则补零

DecimalFormat df3 = new DecimalFormat("000.00");

System.out.println(df3.format(24));

//添加千位分隔符,保留3位小数,不足的补0

DecimalFormat df4 = new DecimalFormat("#,##0.000");

System.out.println(df4.format(new BigDecimal(3613.61)));

System.out.println(df4.format(new BigDecimal(3613.613)));

System.out.println(df4.format(new BigDecimal(3613.6135)));

System.out.println(df4.format(new BigDecimal(3613.6136)));

}

}

2.使用BigDecimal.setScale()方法,会返回BigDecimal类型,但是也可再转成String类型

import static org.junit.Assert.*;

import java.math.BigDecimal;

import java.math.RoundingMode;

import java.text.DecimalFormat;

import org.junit.Test;

public class BigDecimalTest {

/**

* 使用BigDecimal的setScale()方法

*

*/

@Test

public void setBigDecimalScale(){

BigDecimal bd1 = new BigDecimal( 911.911);

BigDecimal bd2 = new BigDecimal( 911.91156);

bd1 = bd1.setScale(4, BigDecimal.ROUND_HALF_UP);

bd2 = bd2.setScale(4, BigDecimal.ROUND_HALF_UP);

System.out.println("bd1=="+bd1);

System.out.println("bd2=="+bd2);

//返回String 不足位就补0

String str1 = bd1.setScale(4, BigDecimal.ROUND_HALF_UP).toString();

System.out.println("str1==="+str1);

//返回String 不足位也不补0

String str2 = new String(""+bd1.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());

System.out.println("str1==="+str2);

}

}

3.BigDecimal和百分比格式互转 参考Java百分比、BigDecimal小数互转

import static org.junit.Assert.*;

import java.math.BigDecimal;

import java.text.DecimalFormat;

import org.junit.Test;

public class BigDecimalTest{

@Test

public void percentTest(){

//BigDecimal 转为百分比格式

DecimalFormat df = new DecimalFormat("0.00%");

BigDecimal d=new BigDecimal(0.666);

String percent=df.format(d);

System.out.println("percent=="+percent);

//百分比格式转为BigDecimal

percent=percent.replace("%","");

Float f = Float.valueOf(percent) / 100;

BigDecimal decimal = new BigDecimal(f);

System.out.println(decimal);//-0.66600000858306884765625

}

}

4.两个BigDecimal比较大小用compareTo()方法,比较结果有-1,0,1,分别表示小于,等于,大于

import static org.junit.Assert.*;

import java.math.BigDecimal;

import org.junit.Test;

public class BigDecimalTest {

@Test

public void testEqual(){

BigDecimal value1 = new BigDecimal(3.14);

BigDecimal value2 = new BigDecimal(3.20);

if(value1.compareTo(value2) == 0){

System.out.println("value1 = value2");

}

if(value1.compareTo(value2) == 1){

System.out.println("value1 > value2");

}

if(value1.compareTo(value2) == -1){

System.out.println("value1 < value2");

}

}

}

你可能感兴趣的:(java,千分位,保留小数)