java将数字格式化为万或者以亿为单位

您所在的位置:网站首页 怎么转成万元 java将数字格式化为万或者以亿为单位

java将数字格式化为万或者以亿为单位

2024-03-29 03:55| 来源: 网络整理| 查看: 265

       在我们项目开发时会遇到这样一种情况,即后台返回的数额过大而导致前端无法正常显示,如超过万、亿级,这时候可以在后台做一个判断若数据大于一万以上,则将数字转换为万或者以亿为单位再返回。

       以下为转换方法类,其中包含三个方法,主方法 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 * @version 1.00.00 * * @date 2018年1月23日 * @return */ public static String zeroFill(double number){ String value = String.valueOf(number); if(value.indexOf(".")


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3