如何用Java实现阿拉伯数字到中文数字的转换?
- 内容介绍
- 文章标签
- 相关推荐
本文共计771个文字,预计阅读时间需要4分钟。
在网络上很难找到将阿拉伯数字完美转换为中文大写数字的代码。以下是一个简化的示例,注意这里仅表示21亿,若需要表示更大的数值,需要将int类型改为long:
pythondef num_to_chinese_upper(num): units=['','十','百','千'] big_units=['', '万', '亿'] str_num=str(num) if len(str_num) > 10: return 数值过大,无法转换
result='' for i, digit in enumerate(str_num[::-1]): if digit !='0': result=digit + units[i] + big_units[i] + result return result
示例print(num_to_chinese_upper(2100000000)) # 输出:二十一亿
在网上没有看到特别完善的阿拉伯数字转换为中文大写的代码,这里贴一下,注意int最大只能表示21亿,需要更大数值转换的话需要将int改成long。
整体思路:每四位划分为一个section,对每个section进行转换,主要是处理数字0
对于每个sectiuon,当前数字0不用转换为零的情况:
- 前一位数字为0。 如:1001 第二个0不用转换为零,因为前面还有一个连续的0
- 后面所有位为同时为0 。 如:1000 后面三个0都不用转换为零
- 对于左起第一个section部分,前导0不用转换为零,对于其他section的前导0需要转为为一个零。如:1111 0010 前面的两个0需要转换为零,但是0010 1111 前面的两个0就不用管
- 对于右起第一个section部分:如果当前section全部是0,不需要转换为零。
本文共计771个文字,预计阅读时间需要4分钟。
在网络上很难找到将阿拉伯数字完美转换为中文大写数字的代码。以下是一个简化的示例,注意这里仅表示21亿,若需要表示更大的数值,需要将int类型改为long:
pythondef num_to_chinese_upper(num): units=['','十','百','千'] big_units=['', '万', '亿'] str_num=str(num) if len(str_num) > 10: return 数值过大,无法转换
result='' for i, digit in enumerate(str_num[::-1]): if digit !='0': result=digit + units[i] + big_units[i] + result return result
示例print(num_to_chinese_upper(2100000000)) # 输出:二十一亿
在网上没有看到特别完善的阿拉伯数字转换为中文大写的代码,这里贴一下,注意int最大只能表示21亿,需要更大数值转换的话需要将int改成long。
整体思路:每四位划分为一个section,对每个section进行转换,主要是处理数字0
对于每个sectiuon,当前数字0不用转换为零的情况:
- 前一位数字为0。 如:1001 第二个0不用转换为零,因为前面还有一个连续的0
- 后面所有位为同时为0 。 如:1000 后面三个0都不用转换为零
- 对于左起第一个section部分,前导0不用转换为零,对于其他section的前导0需要转为为一个零。如:1111 0010 前面的两个0需要转换为零,但是0010 1111 前面的两个0就不用管
- 对于右起第一个section部分:如果当前section全部是0,不需要转换为零。

