向上舍入为49,没有十进制java

时间:2017-03-27 06:08:53

标签: java math double rounding

我需要围绕一个双尾,因为它最后以49和99结束,fx数字2138应该舍入到2149,而数字2150应该舍入到99,这使得数字1-48变为49并且50-98到99 我发现它的一切都是关于将十进制舍入到.99, 它必须是double,因为该值已经使用以下代码舍入到0位小数:

DecimalFormat decimalFormat = new DecimalFormat("#");
String fromattedDouble = decimalFormat.format(xxx);

4 个答案:

答案 0 :(得分:1)

这应该做你想要的:

public static int round(int value) {
    return ((value + 50) / 50 * 50) - 1;
}

答案 1 :(得分:1)

您可以使用此方法:

form:
   title: 'Create User'
   fields:           
        - { other fileds ...}
        - { property: 'expiredAt', label: 'Credentials expired at', type_options: {'widget': 'single_text', 'format': 'dd/MM/yyyy H:mm', 'attr': {'class': 'datepicker'}} }

测试用例

public static int round(double value) {
    value = Math.round(value);
    return (int)(value-(value%50))+49;
}

答案 2 :(得分:0)

您可以使用的一个技巧是将当前数字加倍,将其四舍五入到最接近的100,然后除以2:

int start = 2132;                 // 2132
start = start*2;                  // 4264
start = (start + 50) / 100 * 100; // (4264 + 50) / 100 * 100 = 4300
start = start / 2;                // 2150
start = start - 1;                // 2149

使用这个逻辑:

2100 -> 2099
2132 -> 2149
2150 -> 2149

答案 3 :(得分:0)

以下方法具有预期效果:

static int round_to_49(int i) {
    return ((i+50)/50*50)-1;
}

示例:

50: 99
46: 49
145: 149
154: 199