0

所以说例如我有以下代码:

    DecimalFormat df = new DecimalFormat();
    df.setMaximumFractionDigits(2);
    df.setMinimumFractionDigits(2);
    df.format(125,436573);  

现在这返回一个字符串。

由于您无法转换Stringdouble(使用强制转换)我将如何获得类型double

同样据我所知,这只会删除两位数之后的所有内容,而不是实际四舍五入。

我一直在寻找Java.lang.math对象,但似乎找不到解决方案

为了记录,我需要将它的两倍插入我的数据库表中。

4

3 回答 3

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;
}

您不需要生成一个字符串,这样您就可以再次解析它。

于 2013-06-12T00:59:35.250 回答
1

这是一个示例,我不确定您提出的问题是您真正想提出的问题。似乎你想要有两个小数位的小数,但不仅仅是最终输出格式的问题,而是持久性的问题。

你不想用doubles. 你会得到四舍五入的错误,因为小数不能完全以二进制表示法存储。出于同样的原因,您不想在数据库中将钱作为双倍存储。(链接链接链接

正如您在链接中看到的那样,您希望在数据库中使用带有隐含小数点、BigDecimal 或 NUMERIC 字段的整数组合。

于 2013-06-12T03:29:48.910 回答
0

您可以使用 commons-math3Precision.round(double x, int scale)

于 2013-06-12T03:51:06.453 回答