Java数字转中文大写工具类(拿去即用)

这篇文章介绍了Hutool库中的NumberChineseFormatterUtils类,用于将阿拉伯数字转换为中文形式,包括整数和小数,支持繁简体和金额模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具类包括:

  1. 数字转中文大写形式,比如一百二十一
  2. 数字转金额用的大写形式,比如:壹佰贰拾壹
  3. 转金额形式,比如:壹佰贰拾壹整
package cn.hutool.core.convert;

import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;

/**
 * 数字转中文类
 **/
public class NumberChineseFormatterUtils {
   

	/**
	 * 中文形式,奇数位置是简体,偶数位置是记账繁体,0共用
	 * 使用混合数组提高效率和数组复用
	 **/
	private static final char[] DIGITS = {
   '零', '一', '壹', '二', '贰', '三', '叁', '四', '肆', '五', '伍',
			'六', '陆', '七', '柒', '八', '捌', '九', '玖'};

	/**
	 * 汉字转阿拉伯数字的
	 */
	private static final ChineseUnit[] CHINESE_NAME_VALUE = {
   
			new ChineseUnit(' ', 1, false),
			new ChineseUnit('十', 10, false),
			new ChineseUnit('拾', 10, false),
			new ChineseUnit('百', 100, false),
			new ChineseUnit('佰', 100, false),
			new ChineseUnit('千', 1000, false),
			new ChineseUnit('仟', 1000, false),
			new ChineseUnit('万', 1_0000, true),
			new ChineseUnit('亿', 1_0000_0000, true),
	};


	/**
	 * 阿拉伯数字转换成中文,小数点后四舍五入保留两位. 使用于整数、小数的转换.
	 *
	 * @param amount           数字
	 * @param isUseTraditional 是否使用繁体
	 * @return 中文
	 */
	public static String format(double amount, boolean isUseTraditional) {
   
		return format(amount, isUseTraditional, false);
	}

	/**
	 * 阿拉伯数字转换成中文,小数点后四舍五入保留两位. 使用于整数、小数的转换.
	 *
	 * @param amount           数字
	 * @param isUseTraditional 是否使用繁体
	 * @param isMoneyMode      是否为金额模式
	 * @return 中文
	 */
	public static String format(double amount, boolean isUseTraditional, boolean isMoneyMode) {
   
		if (amount > 99_9999_9999_9999.99 || amount < -99999999999999.99) {
   
			throw new IllegalArgumentException("Number support only: (-99999999999999.99 ~ 99999999999999.99)!");
		}

		// 负数
		boolean negative = false;
		if (amount < 0) {
   
			negative = true;
			amount = -amount;
		}

		// 分和角
		long temp = Math.round(amount * 100);

		final int numFen = (int) (temp % 10);
		temp = temp / 10;
		final int numJiao = (int) (temp % 10);
		temp = temp / 10;

		final 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

UnIQUE Eason

最喜欢你一言不合就打赏的样子了

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

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

打赏作者

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

抵扣说明:

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

余额充值