Java有两个小数的两倍

时间:2013-06-12 00:57:12

标签: java double decimal

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

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

现在返回一个字符串。

由于您无法将String转换为double(使用演员表),我如何获得double类型?

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

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

对于记录,我需要将它插入我的数据库表中。

3 个答案:

答案 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执行此操作。您将获得舍入错误,因为小数不能完全以二进制表示法存储。而且出于同样的原因,您不希望将资金存储在数据库中作为双精度存储。 (Linklinklink

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

答案 2 :(得分:0)

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