在 Java 中格式化带小数刻度的数字符号而不除法的正确方法
Correct way to format a notation of a number with decimal scale in Java without dividing
我阅读了 Java
中的数字转换,因为我需要在我的 Android 应用程序中格式化数字。
我目前持有一个 long
4 位数的变量
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
我做错了什么?
我遇到了同样的问题,要四舍五入到 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));
}
事实上,整数的舍入取决于数字的位数。
如果您更改 BigDecimal
的比例,它将 return 具有指定比例但具有相同数值的新 BigDecimal
。它不会改变未缩放数字的解释。基础缩放数字将被重新缩放。
您应该在 BigDecimal 的初始化时给出比例,以便它正确解释您的未缩放数字:
long variable_1 = 2203;
BigDecimal bd = new BigDecimal(BigInteger.valueOf(variable_1), 1);
System.out.println(String.valueOf(bd));
输出:
220.3
我阅读了 Java
中的数字转换,因为我需要在我的 Android 应用程序中格式化数字。
我目前持有一个 long
4 位数的变量
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
我做错了什么?
我遇到了同样的问题,要四舍五入到 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));
}
事实上,整数的舍入取决于数字的位数。
如果您更改 BigDecimal
的比例,它将 return 具有指定比例但具有相同数值的新 BigDecimal
。它不会改变未缩放数字的解释。基础缩放数字将被重新缩放。
您应该在 BigDecimal 的初始化时给出比例,以便它正确解释您的未缩放数字:
long variable_1 = 2203;
BigDecimal bd = new BigDecimal(BigInteger.valueOf(variable_1), 1);
System.out.println(String.valueOf(bd));
输出:
220.3