use*_*730 27 java precision decimal-point bigdecimal
我使用BigDecimal来获得一些价格值.要求是这样的,我们从数据库获取的值,显示的值应该有2个小数点.
例如:
取值为1 - 应显示为1.00
取值为1.7823 - 应显示为1.78
我正在使用setScale(2, BigDecimal.ROUND_HALF_UP)但仍有一些地方,如果来自DB的数据是一个整数,那么同样的显示!!
我的意思是如果DB的值为0,则仅显示为0.我希望它显示为0.00
谢谢
Evg*_*eev 44
BigDecimal是不可变的,包括setScale(2,BigDecimal.ROUND_HALF_UP)在内的任何操作都会产生一个新的BigDecimal.应该是正确的代码
BigDecimal bd = new BigDecimal(1);
// bd.setScale(2, BigDecimal.ROUND_HALF_UP); bd.setScale does not change bd
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bd);
Run Code Online (Sandbox Code Playgroud)
产量
1.00
Run Code Online (Sandbox Code Playgroud)
cor*_*rin 11
你可以使用舍入格式
BigDecimal bd = new BigDecimal(2.22222);
System.out.println(bd.setScale(2,BigDecimal.ROUND_UP));
Run Code Online (Sandbox Code Playgroud)
希望这对你有所帮助.
要使用JAVA格式化数字,您可以使用:
System.out.printf("%1$.2f", d);
Run Code Online (Sandbox Code Playgroud)
d是您的变量或数字
要么
DecimalFormat f = new DecimalFormat("##.00"); // this will helps you to always keeps in two decimal places
System.out.println(f.format(d));
Run Code Online (Sandbox Code Playgroud)
您需要使用类似NumberFormat适当区域设置的内容来格式化
NumberFormat.getCurrencyInstance().format(bigDecimal);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69326 次 |
| 最近记录: |