gpt4 book ai didi

java - BigDecimal 格式与 DecimalFormat

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:45:41 24 4
gpt4 key购买 nike

我试图通过将 BigDecimal 数字四舍五入到第 15 位来获得可预测的行为。结果,我得到了一些四舍五入或四舍五入的结果。

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class NumberTest {
public static void main(String[] args) {
String pattern = "##############0.0##############";
MathContext mc = new MathContext(15, RoundingMode.HALF_UP);
NumberFormat numberFormat = new DecimalFormat(pattern);

BigDecimal n1 = new BigDecimal(0.0452641706926935, mc);
n1.setScale(15, BigDecimal.ROUND_HALF_UP);
BigDecimal n2 = new BigDecimal(0.0123456789012345, mc);
n2.setScale(15, BigDecimal.ROUND_HALF_UP);

System.out.println("n1: "+n1+" ==> "+n1.doubleValue()+"="+numberFormat.format(n1.doubleValue()));
System.out.println("n3: "+n2+" ==> "+n2.doubleValue()+"="+numberFormat.format(n2.doubleValue()));
}
}

Output of my result:
n1: 0.0452641706926935 ==> 0.0452641706926935=0.045264170692694
n2: 0.0123456789012345 ==> 0.0123456789012345=0.012345678901234

n1 - 四舍五入n2 - 向下舍入

我错过了什么?

谢谢。

最佳答案

您实际上并没有使用为其设置比例的 BigDecimal:

n2.setScale(15, BigDecimal.ROUND_HALF_UP);

这一行应该是:

n2 = n2.setScale(15, BigDecimal.ROUND_HALF_UP);

对其进行更改,它会按预期工作。

关于java - BigDecimal 格式与 DecimalFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25509810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com