我希望打印小数字(doubles
),以便使用Newton
&打印错误。 Secant
方法。
我的一个错误是5.433306166802499E-5
我想打印5.4333E-5
我想过使用BigDecimal
,但我不熟悉这个课程。
答案 0 :(得分:5)
我正在寻找打印小数字(双打)
System.out.printf("%.4e", 5.433306166802499E-5);
结果:5.4333e-05
注意:它不会降低原始值的精度,只是以低精度打印。
答案 1 :(得分:1)
double d = 5.433306166802499E-5;
BigDecimal dc = new BigDecimal(d);
dc = dc .round(new MathContext(3)); // desired significant digits
double rounded = dc .doubleValue();
答案 2 :(得分:0)
你确实可以使用BigDecimal,它看起来如下:
BigDecimal d = BigDecimal.valueOf(val).setScale(scale, RoundingMode.HALF_UP);
double scaled = d.doubleValue();
或者您可以使用:
Math.round(val*Math.pow(10, scale))/Math.pow(10, scale);
答案 3 :(得分:0)
要回答一般性问题,而不仅仅是使用System.out.printf
打印的情况:
您可以使用f
字符串插值器或format方法。
val a: Double = 5.433306166802499E-5
val reduced1: Double = f"$a%1.4e".toDouble
val reduced2: Double = "%1.4e".format(a).toDouble
两者相等:5.4333e-05