python 表示金额时,将中文数字的大写的壹贰叁肆伍转换为阿拉伯数字:rmbTrans.trans

        在处理表格或word文档时,有时候像金额这种数据,在比较正式的情况下会写成中文的形式,比如壹万叁仟陆佰伍拾元贰角这种,我们如何将它转换为阿拉伯数字表示的1365.2元这种形式呢?

         此处介绍一个函数

rmbTrans.trans(“”)

        他的作用就是将输入的中文数字大写转换为阿拉伯数字。不过从字面意义上来看,他好像是专门用来转换 rmb 格式的(意思就是输入的中文大写数字的字符串末尾要有元,角,分 这种表示money的词),然鹅我试了一下,发现貌似当输入的是一个整数,如“壹万叁仟”,他也能成功转换。看下下面这个例子就知道啦

import rmbTrans

rmb = '壹万叁仟元贰分'
num_1 = '壹万叁仟点贰'
num_2 = '壹万叁仟'
amount = rmbTrans.trans(rmb)
amount_1 = rmbTrans.trans(num_1)
amount_2 = rmbTrans.trans(num_2)
print(amount)        #输出13000.02
print(amount_1)      #输出13000
print(amount_2)      #输出13000

所以,经过测试发现,虽然有些情况下确实可以转换一些正整数,不过既然人家名字是rmbTrans,那还是老老实实拿他转换money吧。。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
```java public class NumberToChinese { private static final String[] NUMBER_CN = {"零", "", "", "", "肆", "伍", "陆", "柒", "捌", "玖"}; // 数字对应的中文 private static final String[] UNIT_CN = {"", "拾", "佰", "仟", "万", "亿"}; // 单位对应的中文 /** * 将浮点数转换中文大写数字 * * @param num 待转换的浮点数 * @return 中文大写数字 */ public static String convertToChinese(double num) { if (num == 0) { return NUMBER_CN[0]; } long integerPart = (long) num; // 数部分 double decimalPart = num - integerPart; // 小数部分 String integerPartCn = convertIntegerPartToChinese(integerPart); // 转换数部分 String decimalPartCn = convertDecimalPartToChinese(decimalPart); // 转换小数部分 if (integerPart == 0) { // 如果数部分为0,则只返回小数部分的中文 return decimalPartCn; } else { if (decimalPart == 0) { // 如果小数部分为0,则只返回数部分的中文 return integerPartCn; } else { // 否则返回数部分和小数部分的中文 return integerPartCn + "点" + decimalPartCn; } } } /** * 将数部分转换中文大写数字 * * @param num 数部分 * @return 中文大写数字 */ private static String convertIntegerPartToChinese(long num) { StringBuilder sb = new StringBuilder(); int unitIndex = 0; // 当前处理的单位索引 boolean needZero = false; // 是否需要在数字之间添加“零” while (num > 0) { long digit = num % 10; // 取出最低位数字 if (digit == 0) { // 如果最低位数字为0 if (needZero) { // 如果需要在数字之间添加“零”,则添加 sb.insert(0, NUMBER_CN[0]); } needZero = true; // 下一个数字如果为非0,则需要添加“零” } else { // 如果最低位数字不为0 sb.insert(0, UNIT_CN[unitIndex]); // 添加对应的单位 sb.insert(0, NUMBER_CN[(int) digit]); // 添加对应的数字 unitIndex++; // 处理下一个单位 needZero = false; // 下一个数字如果为0,则不需要添加“零” } num /= 10; // 去掉最低位数字 } // 处理最高位数字为0的情况 if (sb.length() > 0 && sb.charAt(0) == NUMBER_CN[0].charAt(0)) { sb.deleteCharAt(0); } return sb.toString(); } /** * 将小数部分转换中文大写数字 * * @param num 小数部分 * @return 中文大写数字 */ private static String convertDecimalPartToChinese(double num) { StringBuilder sb = new StringBuilder(); while (num > 0) { num *= 10; // 小数部分乘以10,取出数部分的数字 int digit = (int) num; sb.append(NUMBER_CN[digit]); // 添加对应的数字 num -= digit; // 去掉数部分 } return sb.toString(); } } ``` 使用示例: ```java public static void main(String[] args) { double num = 1005.004573; String numCn = NumberToChinese.convertToChinese(num); System.out.println(numCn); // 输出“仟零伍点零零肆伍” } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三头猪等于一头大猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值