如何舍入double以获得最多n位数

时间:2016-09-14 09:09:08

标签: java double rounding

如何舍入double以获得最多n位数,包括小数点前后的数字。

格式:数字(10,8)[最多10位数字,小数点后最多8位数字。

示例:

2233.64344206d应该转到2233.643442d。

2233.64344206d小数点前有4位数字,后面有8位数字,总共12位数字,最多应该有10位数字。 所以2233.643442d是正确的舍入结果,因为它在小数点前有4位数,后面有6位数,总共10位数。

java.text.DecimalFormat适用于小数点后的数字轮。 例如,如果我想将数字四舍五入到小数点后最多4位数,那么我可以使用DecimalFormat("#0。####")

1 个答案:

答案 0 :(得分:0)

您可以使用BigDecimal,查看小数点前需要多少位数,查看所需的总位数,并将比例设置为它们之间的差异:

public static void main(String[] args) {
    double p = 2233.64344206d;
    BigDecimal d = new BigDecimal(p);
    int n = 10;
    int integralDigits = d.toBigInteger().toString().length();
    d = d.setScale(n - integralDigits, RoundingMode.HALF_EVEN);
    System.out.println(d);
}

输出:2233.643442