修复Convert.chineseMoneyToNumber角分丢失问题

This commit is contained in:
Looly 2022-09-15 23:17:31 +08:00
parent 874e33458e
commit 53204e5e5b
3 changed files with 9 additions and 10 deletions

View File

@ -21,6 +21,7 @@
* 【extra 】 修复Ftp中路径问题issue#I5R2DE@Gitee
* 【core 】 修复ConcurrentHashMap.computeIfAbsent缺陷导致的问题
* 【core 】 修复DateUtil.parseUTC时对-的处理问题issue#2612@Github
* 【core 】 修复Convert.chineseMoneyToNumber角分丢失问题issue#2611@Github
-------------------------------------------------------------------------------------------------------------

View File

@ -237,7 +237,6 @@ public class NumberChineseFormatter {
/**
* 中文大写数字金额转换为数字返回结果以元为单位的BigDecimal类型数字
*
*
* 陆万柒仟伍佰伍拾陆元叁角贰分返回67556.32
* 叁角贰分返回0.32
@ -310,8 +309,8 @@ public class NumberChineseFormatter {
}
BigDecimal amount = new BigDecimal(y);
amount = amount.add(BigDecimal.valueOf(j).divide(BigDecimal.TEN, RoundingMode.HALF_UP));
amount = amount.add(BigDecimal.valueOf(f).divide(BigDecimal.valueOf(100), RoundingMode.HALF_UP));
amount = amount.add(BigDecimal.valueOf(j).divide(BigDecimal.TEN, 2, RoundingMode.HALF_UP));
amount = amount.add(BigDecimal.valueOf(f).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
return amount;
}
@ -440,7 +439,6 @@ public class NumberChineseFormatter {
/**
* 把中文转换为数字 二百二十 220<br>
* https://www.d5.nz/read/sfdlq/text-part0000_split_030.html
* <ul>
* <li>一百一十二 - 112</li>
* <li>一千零一十二 - 1012</li>

View File

@ -419,12 +419,12 @@ public class ConvertTest {
*/
Assert.assertEquals(67556, Convert.chineseMoneyToNumber("陆万柒仟伍佰伍拾陆圆").longValue());
Assert.assertEquals(67556, Convert.chineseMoneyToNumber("陆万柒仟伍佰伍拾陆元").longValue());
Assert.assertEquals(0.3D, Convert.chineseMoneyToNumber("叁角").doubleValue(), 2);
Assert.assertEquals(0.02, Convert.chineseMoneyToNumber("贰分").doubleValue(), 2);
Assert.assertEquals(67556.3, Convert.chineseMoneyToNumber("陆万柒仟伍佰伍拾陆元叁角").doubleValue(), 2);
Assert.assertEquals(67556.02, Convert.chineseMoneyToNumber("陆万柒仟伍佰伍拾陆元贰分").doubleValue(), 2);
Assert.assertEquals(0.32, Convert.chineseMoneyToNumber("叁角贰分").doubleValue(), 2);
Assert.assertEquals(67556.32, Convert.chineseMoneyToNumber("陆万柒仟伍佰伍拾陆元叁角贰分").doubleValue(), 2);
Assert.assertEquals(0.3D, Convert.chineseMoneyToNumber("叁角").doubleValue(), 0);
Assert.assertEquals(0.02, Convert.chineseMoneyToNumber("贰分").doubleValue(), 0);
Assert.assertEquals(67556.3, Convert.chineseMoneyToNumber("陆万柒仟伍佰伍拾陆元叁角").doubleValue(), 0);
Assert.assertEquals(67556.02, Convert.chineseMoneyToNumber("陆万柒仟伍佰伍拾陆元贰分").doubleValue(), 0);
Assert.assertEquals(0.32, Convert.chineseMoneyToNumber("叁角贰分").doubleValue(), 0);
Assert.assertEquals(67556.32, Convert.chineseMoneyToNumber("陆万柒仟伍佰伍拾陆元叁角贰分").doubleValue(), 0);
}