如何舍入 double 以具有最大 n 位数
How to round off double to have max n number of digits
如何四舍五入到最多 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.####")
您可以使用 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
如何四舍五入到最多 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.####")
您可以使用 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