Java:如何为双精度值设置精度?

2022-08-31 08:45:39

我最近在处理数字,并且遇到过这样的情况:我想将双精度值的精度设置为 6 位或 4 位,具体取决于数据库中存储的值。

例如,如果在数据库中精度设置为 4 位,则输出必须如下所示:

10.0000.

我尝试使用字符串,但每次使用符号都很烦人。DecimalFormat##.####

有没有更好的方法,像下面这样说:

Double value = 10.0;
value.setPrecision(4);

答案 1

为此,您可以尝试 BigDecimal

Double toBeTruncated = new Double("3.5789055");

Double truncatedDouble = BigDecimal.valueOf(toBeTruncated)
    .setScale(3, RoundingMode.HALF_UP)
    .doubleValue();

答案 2

不能将双精度(或 Double)的精度设置为指定的十进制位数,因为浮点值没有十进制数字。它们具有二进制数字。

您必须转换为十进制基数,通过 或 ,具体取决于您以后要对值执行的操作。BigDecimalDecimalFormat

另请参阅我对这个问题的回答,以反驳不可避免的*100/100答案。


推荐