San*_*ndy -6 java decimal bigdecimal
可能重复:
如何在Java中将数字舍入到n个小数位
我有像"1234.9678"这样的Double值.我想只返回一个小数,没有舍入或上限.
我用这种方式,但它返回"1234.96"
public double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d)); }
Run Code Online (Sandbox Code Playgroud)
我只想要"1234.9",
我甚至用这种方式......但没有运气......任何人都可以帮忙吗?
double d = 1234.9678;
int decimalPlace = 1;
BigDecimal bd = new BigDecimal( Double.toString(d) );
bd = bd.setScale( decimalPlace, BigDecimal.ROUND_HALF_UP );
System.out.println( bd.doubleValue() );
Run Code Online (Sandbox Code Playgroud)
public double roundTwoDecimals(double d)
Run Code Online (Sandbox Code Playgroud)
没有这种签名的方法可以做你所要求的.请看这里反例.
浮点变量不有小数位,所以它们不能被四舍五入到小数点后的具体数字.他们有二进制位置.
你必须使用十进制基数.在Java中,这意味着使用DecimalFormat转换为字符串,或BigDecimal转换为十进制基数的数字,以十进制基数舍入,然后将其转换为字符串,也将是十进制基数.
这意味着您必须将方法的签名更改为:
public BigDecimal roundTwoDecimals(double d)
Run Code Online (Sandbox Code Playgroud)
要么:
public String roundTwoDecimals(double d)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4991 次 |
| 最近记录: |