java bigdecimal 小数_java-使用BigDecimal确定小数位数

我对具有以下getNumberOfDecimalPlace函数感兴趣:

System.out.println("0 = " + Utils.getNumberOfDecimalPlace(0)); // 0

System.out.println("1.0 = " + Utils.getNumberOfDecimalPlace(1.0)); // 0

System.out.println("1.01 = " + Utils.getNumberOfDecimalPlace(1.01)); // 2

System.out.println("1.012 = " + Utils.getNumberOfDecimalPlace(1.012)); // 3

System.out.println("0.01 = " + Utils.getNumberOfDecimalPlace(0.01)); // 2

System.out.println("0.012 = " + Utils.getNumberOfDecimalPlace(0.012)); // 3

我可以知道如何通过使用BigDecimal实现getNumberOfDecimalPlace吗?

以下代码无法正常工作:

public static int getNumberOfDecimalPlace(double value) {

final BigDecimal bigDecimal = new BigDecimal("" + value);

final String s = bigDecimal.toPlainString();

System.out.println(s);

final int index = s.indexOf('.');

if (index < 0) {

return 0;

}

return s.length() - 1 - index;

}

打印以下内容:

0.0

0 = 1

1.0

1.0 = 1

1.01

1.01 = 2

1.012

1.012 = 3

0.01

0.01 = 2

0.012

0.012 = 3

但是,对于案例0、1.0,效果不佳.我希望结果是“ 0”.但是结果却是“ 0.0”和“ 1.0”.结果将返回“ 1”.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值