繁体   English   中英

在Java中仅将小数点舍入到最接近的十进制,如1.17到1.20

[英]Round only the decimal points to the nearest tens in Java like 1.17 to 1.20

如何将给定的数字四舍五入,例如1.17到1.20,而不是1.0或2.0。 我正在尝试打印从4英尺到7英尺的厘米,英尺和英寸的列表。

这是我用来生成列表并记录结果的函数

private void print() {
        final float oneInch = 2.54f;
        final float oneFt = 30.48f;
        final float end = oneInch * 12 * 7;
        float start = oneInch * 12 * 4;
        int cm;
        int ft;
        float in;
        StringBuilder sb = new StringBuilder();
        DecimalFormat decimalFormat = new DecimalFormat("#.##");
        decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
        while (start <= end) {
            if (sb.length() > 0) {
                sb.replace(0, sb.length(), "");
            }

            cm = (int) start;
            sb.append(cm);
            sb.append(" cm, ");

            ft = (int) (start / oneFt);
            in = Float.valueOf(decimalFormat.format(start / oneFt - ft));
            if (in >= 1.0f) {
                ++ft;
                in = 0f;
            }
            sb.append(ft);
            sb.append(" ft ");
            if (in > 0) {
                sb.append(String.valueOf(in).replace("0.", ""));
            }
            start += oneInch;
            Log.i("measure", sb.toString());
        }
    }

这是记录的值

121 cm, 4 ft
124 cm, 4 ft 08
127 cm, 4 ft 17
129 cm, 4 ft 25

它以4 ft 08打印,我如何将英寸部分打印为整数?

121 cm, 4 ft
124 cm, 4 ft 1
127 cm, 4 ft 2
129 cm, 4 ft 3

不要将字符串用于数字运算。 在进行数学运算时,请使用数学运算符和数学函数:

in = (start / oneFt - ft) * 12;

您根本不需要四舍五入。 让DecimalFormat进行舍入:

if (in > 0) {
    sb.append(decimalFormat.format(in));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM