我有一个BigDecimal变量
BigDecimal x = new BigDecimal("5521.0000000001");公式:
x = x.add(new BigDecimal("-1")
.multiply(x.divideToIntegralValue(new BigDecimal("1.0"))));我想去掉整数部分,以获得值x = ("0.0000000001"),但我的新值是1E-10,而不是0.0000000001。
发布于 2012-08-19 21:18:48
要获得不带指数部分的BigDecimal的String表示,可以使用
BigDecimal.toPlainString()。在您的示例中:
BigDecimal x = new BigDecimal("5521.0000000001");
x = x.add(new BigDecimal("-1").
multiply(x.divideToIntegralValue(new BigDecimal("1.0"))));
System.out.println(x.toPlainString());打印
0.0000000001发布于 2017-10-06 14:06:46
尝试使用BigDecimal.toPlainString()获取所需的纯字符串形式的值。
发布于 2012-08-21 04:06:23
也许使用BigDecimal对您没有真正的帮助。
double d = 5521.0000000001;
double f = d - (long) d;
System.out.printf("%.10f%n", f);打印
0.0000000001但是,值5521.0000000001只是一个近似表示。
实际的表示是
double d = 5521.0000000001;
System.out.println(new BigDecimal(d));
BigDecimal db = new BigDecimal(d).subtract(new BigDecimal((long) d));
System.out.println(db);打印
5521.000000000100044417195022106170654296875
1.00044417195022106170654296875E-10我怀疑无论您尝试什么都没有意义,因为您似乎正在尝试获取一个与您认为的值不同的值。
https://stackoverflow.com/questions/12026610
复制相似问题