用hutool将数字转简体中文和繁体中文,支持金额模式

最近项目中用到金额转大写的地方,然后hutool里面正好有这个功能。

工具类路径:

cn.hutool.core.convert.Convert#digitToChinese

 方法描述:

	/**
	 * 金额转为中文形式
	 * 
	 * @param n 数字
	 * @return 中文大写数字
	 * @since 3.2.3
	 */
	public static String digitToChinese(Number n) {
		if(null == n) {
			return "零";
		}
		return NumberChineseFormatter.format(n.doubleValue(), true, true);
	}

参数是Number类型,而Bigdecimal也是此类的子类,所以使用Bigdecimal和这个类就可以实现功能了

后来我又看了这个方法的实现,里面调用了NumberChineseFormatter这个类的方法,而这个类又封装了一层方法

cn.hutool.core.convert.NumberChineseFormatter#format(double, boolean, boolean)

 这个方法多了两个参数,isUseTraditional和isMoneyMode,分别表示是否使用繁体大写和是否表示金额

	/**
	 * 阿拉伯数字转换成中文,小数点后四舍五入保留两位. 使用于整数、小数的转换.
	 *
	 * @param amount           数字
	 * @param isUseTraditional 是否使用繁体
	 * @param isMoneyMode      是否为金额模式
	 * @return 中文
	 */
	public static String format(double amount, boolean isUseTraditional, boolean isMoneyMode) {
       //此处省略hutool方法体代码
    }

isUseTraditional:是否转为繁体。false将阿拉伯数字转为 "一", "二", "三"简体形式,true将阿拉伯数字转换为"壹", "贰", "叁"繁体形式;

isMoneyMode:是否金额模式。false将数字转为纯中文数字,true将阿拉伯数字转为带"元","角","分"的中文数字。

总结:如果用这个方法,既可以将数字转简体中文,又可以转为金额形式。

应用:

一、将阿拉伯数字序号转为简单中文数字:

        List<Number> numbers = Arrays.asList(1,2.0,3.31,4.71,5.86);
        System.out.println("数字转序号:");
        numbers.forEach(item ->{
            System.out.println(NumberChineseFormatter.format(item.doubleValue(), false, false));
        });

控制台输出:

数字转序号:
一
二
三点三一
四点七一
五点八六

二、将阿拉伯金额转为中文大写金额

        List<Number> numbers = Arrays.asList(1,2.0,3.31,4.71,5.86);
        System.out.println("数字转金额:");
        numbers.forEach(item ->{
            System.out.println(NumberChineseFormatter.format(item.doubleValue(), true, true));
        });

控制台输出:

数字转金额:
壹元整
贰元整
叁元叁角壹分
肆元柒角壹分
伍元捌角陆分

 

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xinqing5130

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

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

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

打赏作者

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

抵扣说明:

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

余额充值