如何在不使用舍入的情况下将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。
a.bcde
a.bc
因此,如果您只需要打印部分,那么如何进行一些字符串操作呢?使用找到小数点,indexOf并使用提取两个小数部分substring。
indexOf
substring