如何在不使用舍入的情况下将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
提取带有两个小数的部分。