在java中,如何获得BigDecimal的第一个非零数字?
例如:
0.001 => 1
0.02 => 2
987.654 => 9对于0到1之间的数字,这将起作用:
bigDecimal.scaleByPowerOfTen(bigDecimal.precision()).setScale(0, RoundingMode.DOWN)对于大于1的数字,这将起作用:
bigDecimal.scaleByPowerOfTen(1-bigDecimal.precision()).setScale(0, RoundingMode.DOWN)但是有没有一个解决方案,对任何数字都有效?
发布于 2015-09-29 15:54:32
这里有一个只使用BigDecimal和int的解决方案
BigDecimal value = new BigDecimal(0.021); //input your value here
int scale = value.scale();
int precision = value.precision();
int result = value.movePointLeft(precision-scale-1).abs().intValue(); //this will generate the result you need发布于 2015-09-29 15:35:07
可以将BigDecimal转换为char[],并使用循环检查数字。请看下面的示例。
BigDecimal bigDecimal = new BigDecimal(5220.33);
char[] chars = String.valueOf(bigDecimal).toCharArray();
for (char c : chars) {
if (Character.isDigit(c) ? Character.getNumericValue(c) != 0 : false) {
System.out.println("First number is : " + c);
return;
}
}https://stackoverflow.com/questions/32847896
复制相似问题