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

以下为转换方法类,其中包含三个方法,主方法 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(".")<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);

}

}

JAVA将数值转化为以亿为单位_java将数字格式化为万或者以亿为单位相关推荐

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

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

  2. java数字格式化为货币字符串_Java把数字格式化为货币字符串实例代码

    数字可以标志货币.百分比.积分和电话号码等,就货币而言,在不同的国家会以不同的格式来定义,本实例将接收用户输入的数字,然后在控制台中输出其货币格式,其中使用了不同国家的货币格式. 思路如下:使用Num ...

  3. java 数字转化为汉字_工具类_java 数字转化为汉字大写

    public class Num2Rmb { private String[] hanArr = { "零", "壹", "贰", &quo ...

  4. java基础----数据类型转化

    数据类型的转换是将一个数值从一种数据类型转化成另一种数据类型的过程. Java中数据类型的转换有两种:隐式数据类型转换和显式数据类型转换. 隐式数据类型转换是指系统自动执行,无序程序员显式编程而实现的 ...

  5. java日期存入数据库_怎样在Java中将日期转化插入到数据库

    展开全部 Java中将e5a48de588b662616964757a686964616f31333339653664日期转化插入到数据库: public static Date dateTimeSt ...

  6. C++知识点21——使用C++标准库(再谈string——string的搜索和数值转化)

    string的搜索操作一共6个 1.find size_t find (const string& str, size_t pos = 0) const; //从调用对象的下标pos处开始查找 ...

  7. java当前时间转化毫秒_Java中将毫秒转化为日期的方法

    Java中将毫秒转化为日期的方法 将毫秒转化为日期 import java.awt.BorderLayout; import java.awt.Frame;import java.awt.TextAr ...

  8. vba将数值转化文本格式_Excel文本格式和数字格式的相互转换

    在工作中,我们会经常遇到文本格式和数字格式的相互转换问题.今天小编就提供如何快速将文本格式和数字格式相互转换. 文本格式转换为数字格式 上图为某公司业务员业绩表,请问总业绩是多少? 方法一:一键转换法 ...

  9. 怎么样把Java的字符串转化为字节数组?

    问题:怎么样把Java的字符串转化为字节数组 有没有任何方法把Java的字符串转化为字节数组 我尝试这样: System.out.println(response.split("\r\n\r ...

最新文章

  1. 4.10日一直报错application未注入的问题解决
  2. 霍金的预言正在实现,我们已经离不开人工智能,而它们在脱离控制
  3. 05_MyBatis基于注解的开发
  4. Go判断输出数据类型
  5. android WIFI信息获取
  6. eclipse git提交代码_来看看大厂的Git提交规范,千万别乱提交代码哦...
  7. DCOS Virtual Networks
  8. oracle两种用户认证方式
  9. 关于MySQL latch争用深入分析与判断
  10. 魏德米勒端子eplan宏_魏德米勒端子选型图册(完全版).pdf
  11. ArcGIS获取点图层对应栅格图层的栅格行列号(或属性值)
  12. 电脑32位和64位有什么区别
  13. 微信小程序自动回复机器人(模拟云信案例)
  14. 搜狗站长平台的域名验证-搜狗批量添加域名
  15. (2.2)【窃密型木马-广外幽灵】简介、使用
  16. 两台无线路由桥接教程
  17. 机器学习实战2(决策树篇)
  18. 【PPPAR】PPPAR入门知识点
  19. altera CPLD通过nios在线升级
  20. 炫酷的网页特效展示分享

热门文章

  1. R2S软路由基于openwrt固件的FTP共享设置丨移动端打不开smb2协议的替换方案
  2. 电容或电感的电压_玉山YGR智能电容以客为尊-老友网
  3. 【Qt】QTimer的简单使用
  4. 删除取消电脑某个文件的共享
  5. 论点的批判与反驳,及再次论证
  6. No space left on device 解决Linux系统磁盘空间满的办法
  7. 解决win11默认网关不可用导致间歇性信号不佳的问题
  8. 计算机网络之传输层-传输控制协议(TCP)
  9. 拿什么拯救你,巨硬的微软拼音——AHK实现切换自由
  10. 小程序开发:未找到 app.json 中的定义的 pages “pages/index/index“ 对应的 WXML 文件