我已经在Java
中做了关于数字转换的阅读,因为我需要在我的Android应用程序中格式化数字。
我目前持有一个4位数的long
变量
long variable_1 = 2203;
这就是我要打印的
220.3
到目前为止我做了什么
variable_1 = 2203;
BigDecimal bd = new BigDecimal(variable_1);
bd = bd.setScale(1, BigDecimal.ROUND_HALF_UP);
txtView_variable_1.setText(String.valueOf(bd));
结果2203.0
我在这里做错了什么?
如果更改BigDecimal
的比例,它将返回具有指定比例但具有相同数值的新BigDecimal
。它不会改变未缩放数的解释。底层的缩放数将被重新缩放。
您应该在初始化BigDecimal时给出比例,以便它正确解释未缩放的数字:
long variable_1 = 2203;
BigDecimal bd = new BigDecimal(BigInteger.valueOf(variable_1), 1);
System.out.println(String.valueOf(bd));
输出:
220.3
我在0.1处也遇到了同样的问题我是这样做的:
private BigDecimal roundBigDecimal(BigDecimal valueToRound) {
int valeurEntiere = valueToRound.intValue();
String str = String.valueOf(valeurEntiere);
int rounding = valeurEntiere == 0 ? 1 : str.length() + 1;
return new BigDecimal(String.valueOf(valueToRound), new MathContext(rounding, RoundingMode.HALF_UP));
}
实际上整型的舍入取决于数的位数