java实现数值千分位格式化且保留指定小数位且小数位不进行四舍五入

问题如题,本能解决,但希望能有个更简单明了的方法。举个例子如下:输入一个数值:12345678901.123456;然后通过java后台处理输出结果为:12,345,67... 问题如题,本能解决,但希望能有个更简单明了的方法。 举个例子如下:
输入一个数值:12345678901.123456 ;
然后通过java后台处理输出结果为:12,345,678,901.1234 ; 千分位格式化(整数部分3位采用逗号隔开,小数位保留4位,且最后的还是4而不是由于第五位是5就给进了一位,无需进行四舍五入)。

有待高手解决,如果以上问题能给予具体代码方法解决,能否再度实现一个其余条件不变,保留指定位数能进行四舍五入(12,345,678,901.1235)的简单明了方法。
谢谢!!!

想着能多给点悬赏分,貌似少于用知道,都没什么悬赏分数了,希望能给予帮助解决下问题。万分感谢!
展开
 我来答
百度网友19bbb55
2014-08-31 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:68
采纳率:0%
帮助的人:71.3万
展开全部
保留指定位数能进行四舍五入
public static void main(String[] args) {
String str ="12312323423423.123283123";
BigDecimal b = new BigDecimal(str);
//,代表分隔符
//0.后面的##代表位数 如果换成0 效果就是位数不足0补齐
DecimalFormat d1 =new DecimalFormat("#,##0.####;(#)");
System.out.println(d1.format(b));
}
不四舍五入的方法
String str ="12312323423423.123283923";
BigDecimal b = new BigDecimal(str);
//,代表分隔符
//.后面的##代表位数 如果换成0 效果就是位数不足0补齐
DecimalFormat d1 =new DecimalFormat("#,##0.######");
// 设置舍入模式
d1.setRoundingMode(RoundingMode.FLOOR);

System.out.println(d1.format(b));
追问

谢谢您的耐心解答,问题完美解决,能否再问下: 小数位的位数是不固定的,这个格式化的字符串小数位后的###能否动态呢,我使用了for

追答
可以的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式