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");

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值