前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大额数字转节权位

大额数字转节权位

作者头像
阿超
发布2022-08-21 11:28:07
4270
发布2022-08-21 11:28:07
举报
文章被收录于专栏:快乐阿超快乐阿超

今天在hutool提交了个PR

https://gitee.com/dromara/hutool/pulls/536

NumberChineseFormatter.formatSimple,用于将阿拉伯数字(支持正负整数)四舍五入后转换成中文节权位简洁计数单位,例如 -5_5555 =》 -5.56万

代码如下:

代码语言:javascript
复制
/**
 * 阿拉伯数字(支持正负整数)四舍五入后转换成中文节权位简洁计数单位,例如 -5_5555 =》 -5.56万
 *
 * @param amount 数字
 * @return 中文
 */
public static String formatSimple(long amount) {
	if (amount < 1_0000 && amount > -1_0000) {
		return String.valueOf(amount);
	}
	String res;
	if (amount < 1_0000_0000 && amount > -1_0000_0000) {
		res = NumberUtil.div(amount, 1_0000, 2) + "万";
	} else if (amount < 1_0000_0000_0000L && amount > -1_0000_0000_0000L) {
		res = NumberUtil.div(amount, 1_0000_0000, 2) + "亿";
	} else {
		res = NumberUtil.div(amount, 1_0000_0000_0000L, 2) + "万亿";
	}
	return res;
}

测试用例如下:

代码语言:javascript
复制
@Test
public void formatSimpleTest() {
	String f1 = NumberChineseFormatter.formatSimple(1_2345);
	Assert.assertEquals("1.23万", f1);
	f1 = NumberChineseFormatter.formatSimple(-5_5555);
	Assert.assertEquals("-5.56万", f1);
	f1 = NumberChineseFormatter.formatSimple(1_2345_6789);
	Assert.assertEquals("1.23亿", f1);
	f1 = NumberChineseFormatter.formatSimple(-5_5555_5555);
	Assert.assertEquals("-5.56亿", f1);
	f1 = NumberChineseFormatter.formatSimple(1_2345_6789_1011L);
	Assert.assertEquals("1.23万亿", f1);
	f1 = NumberChineseFormatter.formatSimple(-5_5555_5555_5555L);
	Assert.assertEquals("-5.56万亿", f1);
	f1 = NumberChineseFormatter.formatSimple(123);
	Assert.assertEquals("123", f1);
	f1 = NumberChineseFormatter.formatSimple(-123);
	Assert.assertEquals("-123", f1);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档