import java.math.BigDecimal; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @ 金额格式转换. */ public class AmountUtil { private static final BigDecimal MAG = BigDecimal.valueOf(1000); private static final BigDecimal MAG4 = BigDecimal.valueOf(10000); /** * 保留小数位数 */ private static final int SCALE_VALUE = 3; public static final int DEFAULT_MONERY_SCALE_VALUE = 2; /** * 四舍五入保留两位小数 * * @param amount * @return amount四舍五入结果 */ public static double formatAmount(double amount) { BigDecimal b = new BigDecimal(amount); return b.setScale(SCALE_VALUE, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 验证输入的字符串是否是金额格式 * * @param amount * @return */ public static boolean checkAmount(String amountString) { if (null == amountString || amountString.trim().length() == 0) { return false; } amountString = amountString.trim(); String str = "^(0(\\.\\d{0,2})?|([1-9]+[0]*)+(\\.\\d{0,2})?)$"; Pattern p = Pattern.compile(str); Matcher m = p.matcher(amountString); return m.find(); } /** * 格式化 * @param amount * @return */ public static String formatAmountStr(String amountString) { int pos = amountString.indexOf("."); if (pos != -1) { int tempInt = amountString.substring(pos + 1, amountString.length()).length(); if (tempInt == 1) { amountString += "0"; } if (tempInt > 2) { amountString = amountString.substring(0, pos + 3); } } else { amountString += ".00"; } return amountString; } /** * 除1000得到真实钱值 * @param money * @return */ public static BigDecimal divide1000(Long money) { if (money == null) { return null; } BigDecimal result = BigDecimal.valueOf(money); return result.divide(MAG).setScale(DEFAULT_MONERY_SCALE_VALUE, BigDecimal.ROUND_HALF_UP); } /** * 除1000得到真实钱值(保留3位小数) * @param money * @return */ public static BigDecimal divide1000Scale3(Long money) { if (money == null) { return null; } BigDecimal result = BigDecimal.valueOf(money); return result.divide(MAG).setScale(3, BigDecimal.ROUND_HALF_UP); } /** * 除1000得到真实钱值 * @param money * @return */ public static BigDecimal divide1000(BigDecimal money) { if (money == null) { return null; } return money.divide(MAG).setScale(2, BigDecimal.ROUND_HALF_UP); } /** * 除10000得到真实钱值 * @param money * @return */ public static BigDecimal divide10000(Long money) { if (money == null) { return null; } BigDecimal result = BigDecimal.valueOf(money); return result.divide(MAG4).setScale(DEFAULT_MONERY_SCALE_VALUE, BigDecimal.ROUND_HALF_UP); } /** * 除10000得到真实钱值,保留4为小数 * @param money * @return */ public static BigDecimal divide10000For4Scale(Long money) { if (money == null) { return null; } BigDecimal result = BigDecimal.valueOf(money); return result.divide(MAG4).setScale(4, BigDecimal.ROUND_HALF_UP); } /** * 除10000得到真实钱值 * @param money * @return */ public static BigDecimal divide10000(BigDecimal money) { if (money == null) { return null; } return money.divide(MAG4).setScale(2, BigDecimal.ROUND_HALF_UP); } /** * 乘以1000得到计算用钱值 * @param money * @return */ public static Long multiply1000(BigDecimal money) { if (money == null) { return null; } return money.multiply(MAG).setScale(2, BigDecimal.ROUND_HALF_UP).longValue(); } /** * 乘以10000得到计算用钱值 * @param money * @return */ public static Long multiply10000(BigDecimal money) { if (money == null) { return null; } return money.multiply(MAG4).setScale(2, BigDecimal.ROUND_HALF_UP).longValue(); } /** * 乘以1000得到计算用钱值 * @param money * @return */ public static Long multiply1000(Double money) { if (money == null) { return null; } BigDecimal result = BigDecimal.valueOf(money); return result.multiply(MAG).setScale(2, BigDecimal.ROUND_HALF_UP).longValue(); } /** * 乘以1000得到计算用钱值 * @param money * @return */ public static Long multiply1000(Long money) { if (money == null) { return null; } BigDecimal result = BigDecimal.valueOf(money); return result.multiply(MAG).setScale(2, BigDecimal.ROUND_HALF_UP).longValue(); } // public static void main(String[] args) { // long id = 1234567890L; // BigDecimal bigDecimal = AmountUtil.divide1000Scale3(id); // System.out.println(bigDecimal); // } }
相关推荐
支持Oracle,SQL Sever,Access,Excel等数据库之间数据格式批量转换:即Oracle转SQL Server;SQL Server转Oracle;Oracle转Access;Access转Oracle;SQL Server转Access, Access转SQL Server等,支持Oracle,SQL Sever,...
基于vue element的金额格式化组件
主要介绍Javascript将数值转换为金额格式的方法,通俗易懂,需要的朋友可以参考下。
VB 将小写数字金额格式化为大写金额,这一个相比其它的金额数字转换,是自动转换,用户输入完小写数字金额后,程序将自动把小写数字变为大写,不过奇怪的是,在代码中并没有发现转换功能写在哪里,看到有数据库,...
用正则表达式检验日期,身份证,金额,格式化日期,转换金额格式(小写转换成大写)
输入字符,通过正则验证是否为金额不超过万亿精确到小数点后两位,然后将数字转换为大写 包括后台java正则验证及前台js验证 请输入一个数字(精确到小数点后两位): fdsa54325.54 fdsa54325.54 false 请输入一个...
转换金额.html 转换金额.html function 函数名(){ }
把金额转换为大写
软件大小:133 KB 软件语言:简体中文 软件性质:免费软件 软件类别:国外软件 运行环境:只测试了XP环境 软件简介: 小软件,方便财务上填写大小写金额转换,不会大小写金额格式的朋友可试用
Excel中要将人民币小写金额转换成大写格式
主要介绍了js 金额格式化来回转换实现,需要的朋友可以参考下
代码如下: //金额格式转换 function parsePrice(s) { var n = 2 //设置保留的小数位数 s = parseFloat((s + “”).replace(/[^\d\.-]/g, “”)).toFixed(n) + “”; var l = s.split(“.”)[0].split(“”).reverse...
最好放在公共方法里,以便调用,定义String 类型接受返回的金额,调用参数为需要传入的金额
//下面的代码被lichaohui格式化整理 if NN > 9999999999999.99 then begin //MessageDlg(‘金额溢出。‘,mtError,[mbOk], 0); HZ := ‘‘; Result := HZ; exit; end; if NN = 0 then begin HZ := ‘零元‘; result ...
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)_.docx
将金额数字转化为大写,格式规范标准。① 当没有零头时自动加xxxx元整 ② 小数能够精确到角、分、厘 ③ 能够处理1亿一下金额数字 ④ 使用方法:numToBig(金额),返回大写字符串
将数字转换为大写金额字符串,将数字转换成大写的汉字,在加上单位,变成金钱一样的输出
大金额转换到中文传统格式从壹到兆的几种方案,欢迎下载交流
JS将数字转换为大写汉字人民币