例如
541.59将被转换为550。
只需检查最后2位数即可忽略 十进制值。如果最后2位数 在11-19之间,它将转换20如果 21-29然后将转换30,依此类推..
那我该怎么办? 需要你的帮助。
提前感谢....
答案 0 :(得分:4)
我只是猜测你的意思,但假设你要舍入到最接近的n,你可以做以下事。
double d = Math.round(d / n) * n;
e.g。如果n = 50
double d = Math.round(d / 50) * 50;
答案 1 :(得分:2)
使用 MathUtils [ Commons Math ]:
- static double round(double x, int scale)
或
- static double round(double x, int scale, int roundingMethod)
MathUtils.round(598.59, -1); // 600.0
MathUtils.round(591.45, -1, BigDecimal.ROUND_CEILING); // 600.0
MathUtils.round(541.0, -1, BigDecimal.ROUND_CEILING); // 550.0
MathUtils.round(541.59, -1, BigDecimal.ROUND_CEILING); // 550.0
有关更新
只需检查最后2位数即可忽略 十进制值。如果最后2位数 在11-19之间,它将转换20如果 然后21-29将转换为30左右 上..
MathUtils.round((double) 111, -1, BigDecimal.ROUND_UP); // 120.0
MathUtils.round((double) 119, -1, BigDecimal.ROUND_UP); // 120.0
MathUtils.round((double) 121, -1, BigDecimal.ROUND_UP); // 130.0
MathUtils.round((double) 129, -1, BigDecimal.ROUND_UP); // 130.0
使用“加倍”以确保使用round(double x, ...)
,而不是round(float x, ...)
。
答案 2 :(得分:1)
好的,所以你可以使用Math类。像这样:
Math.floor(myNumber); //541.59 -> 541, returns double
但在这种情况下,您必须定义舍入的“限制”。这是为了什么目的?
答案 3 :(得分:1)
例如
public class RoundToTwodecimalPlaces {
public static double roundTo2Places(double value) {
assert value >= Long.MIN_VALUE / 100 && value <= Long.MAX_VALUE / 100;
long digits = (long) (value < 0 ? value * 100 - 0.5 : value * 100 + 0.5);
return (double) digits / 100;
}
private RoundToTwodecimalPlaces() {
}
}
答案 4 :(得分:1)
598.59 ya 591.45 to be convert 600.
541.0 to be convert 550.
541.59 to be convert 550.
至于我: 1.除以10
59.859
54.10
54.159
2。舍入到最接近的不小于整数和3.乘以10。 收到 600 550 550
答案 5 :(得分:0)
公共类RoundToTwodecimalPlaces {
public static double roundTo2Places(double value) {
assert value >= Long.MIN_VALUE / 100 && value <= Long.MAX_VALUE / 100;
long digits = (long) (value < 0 ? value * 100 - 0.5 : value * 100 + 0.5);
return (double) digits / 100;
}
private RoundToTwodecimalPlaces() {
}
}