Java 格式化数字为千分位表示
在昨天的基础上封装一哈,昨天的:https://www.cnblogs.com/engure/p/17087169.html
/**
* 格式化数字为千分位表示
*
* @param value 数值,可为 String/六种数值类型/BigDecimal
* @param fieldLength 保留的小数位数,为 null 时的默认规则:若 value 为 bigDecimal 则不进行设置,否则保留两位小数
* @param delimiter 千分位分隔符,为空时默认为 ,
* @return 格式化后的数据,比如 1,234,567.89
*/
public static String format(Object value, Integer fieldLength, String delimiter) {
try {
if (value == null) {
throw new NullPointerException("数值不可为null");
}
BigDecimal bigDecimalVal;
if (value instanceof BigDecimal) {
bigDecimalVal = (BigDecimal) value;
if (fieldLength != null) {
bigDecimalVal = bigDecimalVal.setScale(fieldLength, RoundingMode.HALF_UP);
}
} else {
bigDecimalVal = new BigDecimal(value.toString());
if (fieldLength != null) {
bigDecimalVal = bigDecimalVal.setScale(fieldLength, RoundingMode.HALF_UP);
} else {
bigDecimalVal = bigDecimalVal.setScale(2, RoundingMode.HALF_UP);
}
}
if (!StringUtils.hasLength(delimiter)) {
delimiter = ",";
}
NumberFormat instance = NumberFormat.getInstance();
instance.setMinimumFractionDigits(bigDecimalVal.scale());
String[] parts = instance.format(bigDecimalVal).split(",");
StringBuilder res = new StringBuilder();
for (int i = 0; i < parts.length; i++) {
res.append(parts[i]);
if (i != parts.length - 1) {
res.append(delimiter);
}
}
return res.toString();
} catch (Exception e) {
e.printStackTrace();
}
}
沉舟侧畔千帆过,病树前头万木春。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现