所以说例如我有以下代码:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(2);
df.format(125,436573);
现在返回一个字符串。
由于您无法将String
转换为double
(使用演员表),我如何获得double
类型?
此外,据我所知,这只会删除两位数之后的所有内容,而不是实际四舍五入。
我一直在寻找Java.lang.math
个对象,但似乎无法找到解决方案
对于记录,我需要将它插入我的数据库表中。
答案 0 :(得分:2)
这是我用来舍入到小数点后两位的地方。
public static double round2(double d) {
final double factor = 1e2;
return d > Long.MAX_VALUE / factor || d < -Long.MAX_VALUE / factor ?
(long) (d < 0 ? d * factor - 0.5 : d * factor + 0.5) / factor : d;
}
您不需要生成一个String,因此您可以再次解析它。
答案 1 :(得分:1)
这是一个例子,我不确定你问的问题是你真正想要提出的问题。看起来好像你想要小数位正好两位小数,但不仅仅是最终输出格式的问题,而是持久性。
您不希望使用doubles
执行此操作。您将获得舍入错误,因为小数不能完全以二进制表示法存储。而且出于同样的原因,您不希望将资金存储在数据库中作为双精度存储。 (Link,link,link)
正如您在链接中看到的那样,您希望在数据库中使用一些带有隐含小数点或BigDecimal或NUMERIC字段的整数组合。
答案 2 :(得分:0)
您可以使用commons-math3 Precision.round(double x, int scale)