如何在不使用舍入的情况下将Java中的 float 原语缩减为两个小数位置?

123.99999 to 123.99
-8.022222 to -8.02
仅舍入小数点后两位不应该四舍五入。
第二点是如何验证或计算该点之后的小数位数?:
123.99 will give true or 2
123.999 will give false or 3

更新
数字是字符串输入,因此我认为我会按照建议进行操作;而且我只会有int try/catch块来处理任何异常。欢迎提供任何建议以更智能的方式进行这项工作:
public static float onlyTwoDecimalPlaces(String number) {
    StringBuilder sbFloat = new StringBuilder(number);
    int start = sbFloat.indexOf(".");
    if (start < 0) {
        return new Float(sbFloat.toString());
    }
    int end = start+3;
    if((end)>(sbFloat.length()-1)) end = sbFloat.length();

    String twoPlaces = sbFloat.substring(start, end);
    sbFloat.replace(start, sbFloat.length(), twoPlaces);
    return new Float(sbFloat.toString());
}

最佳答案

首先,不能保证仅由于浮点数可以精确表示a.bcde,就可以保证能够精确表示a.bc

因此,如果您只需要打印部分,那么如何进行一些字符串操作呢?使用indexOf找到小数点,并使用substring提取带有两个小数的部分。

10-08 08:30