【发布时间】:2011-02-19 14:41:14
【问题描述】:
如何在不使用舍入的情况下将 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());
}
【问题讨论】:
-
浮点数不能这样工作。请阅读例如scribd.com/doc/5836/…
标签: java floating-point decimal