JAVA将数值转化为以亿为单位_java将数字格式化为万或者以
亿为单位
在我们项⽬开发时会遇到这样⼀种情况,即后台返回的数额过⼤⽽导致前端⽆法正常显⽰,如超过万、亿级,这时候可以在后台做⼀个判断若数据⼤于⼀万以上,则将数字转换为万或者以亿为单位再返回。
以下为转换⽅法类,其中包含三个⽅法,主⽅法 amountConversion() 实现数字转换为万或者亿为单位、formatNumber()⽤于对数字进⾏四舍五⼊保证转换后的数据准确性、zeroFill()⽤于对数字进⾏补零此⽅法可根据实际需求酌情使⽤。
import java.math.BigDecimal;
import java.math.RoundingMode;
import org.slf4j.Logger;
public class NumberUtils {
private static final Double MILLION = 10000.0;
private static final Double MILLIONS = 1000000.0;
private static final Double BILLION = 100000000.0;
private static final String MILLION_UNIT = "万";
private static final String BILLION_UNIT = "亿";
/**
* 将数字转换成以万为单位或者以亿为单位,因为在前端数字太⼤显⽰有问题
*
* @author
* @version 1.00.00
*
* @date 2018年1⽉18⽇
* @param amount 报销⾦额
* @return
*/
public static String amountConversion(double amount){
//最终返回的结果值
String result = String.valueOf(amount);
//四舍五⼊后的值
double value = 0;
//转换后的值
double tempValue = 0;
//余数
double remainder = 0;
//⾦额⼤于1百万⼩于1亿
if(amount > MILLIONS && amount < BILLION){
tempValue = amount/MILLION;
remainder = amount%MILLION;
log.info("tempValue=" + tempValue + ", remainder=" + remainder); //余数⼩于5000则不进⾏四舍五⼊
if(remainder < (MILLION/2)){
value = formatNumber(tempValue,2,false);
}else{
value = formatNumber(tempValue,2,true);
}
/
/如果值刚好是10000万,则要变成1亿
if(value == MILLION){
result = zeroFill(value/MILLION) + BILLION_UNIT;
}else{
result = zeroFill(value) + MILLION_UNIT;
}
}
//⾦额⼤于1亿
else if(amount > BILLION){
tempValue = amount/BILLION;
remainder = amount%BILLION;
log.info("tempValue=" + tempValue + ", remainder=" + remainder); //余数⼩于50000000则不进⾏四舍五⼊
if(remainder < (BILLION/2)){
value = formatNumber(tempValue,2,false);
}else{
value = formatNumber(tempValue,2,true);
}
result = zeroFill(value) + BILLION_UNIT;
}else{
result = zeroFill(amount);
}
log.info("result=" + result);
return result;
}
/**
* 对数字进⾏四舍五⼊,保留2位⼩数
*
* @author
* @version 1.00.00
*
* @date 2018年1⽉18⽇
* @param number 要四舍五⼊的数字
* @param decimal 保留的⼩数点数
* @param rounding 是否四舍五⼊
* @return
*/
public static Double formatNumber(double number, int decimal, boolean rounding){ BigDecimal bigDecimal = new BigDecimal(number);
if(rounding){
return bigDecimal.setScale(decimal,RoundingMode.HALF_UP).doubleValue();
}else{
return bigDecimal.setScale(decimal,RoundingMode.DOWN).doubleValue();
}
}
/**
* 对四舍五⼊的数据进⾏补0显⽰,即显⽰.00
*
* @author
bigdecimal格式化两位小数
* @version 1.00.00
*
* @date 2018年1⽉23⽇
* @return
*/
public static String zeroFill(double number){
String value = String.valueOf(number);
if(value.indexOf(".")<0){
value = value + ".00";
}else{
String decimalValue = value.substring(value.indexOf(".")+1); if(decimalValue.length()<2){
value = value + "0";
}
}
return value;
}
/**
* 测试⽅法⼊⼝
*
* @author
* @version 1.00.00
*
* @date 2018年1⽉18⽇
* @param args
*/
public static void main(String[] args) throws Exception{ amountConversion(120);
amountConversion(18166.35);
amountConversion(1222188.35);
amountConversion(129887783.5);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。