如何确定双精度数的小数位数?

时间:2020-07-27 08:28:08

标签: java decimalformat

这个问题已经问过好几次了,但是我有以前提到的问题中从未提及的规范。

我想知道小数点后有多少个数字,包括最后的零。

我已经尝试过了:

double d= user_input;
String text =Double.toString(Math.abs(d));
int integerPlaces =text.indexOf('.');
int decimalPlaces =text.length() - integerPlaces - 1;

user_input 是用户可以输入的任何值。

它运行良好,例如2.384显示3小数,是正确的。

但是当用户输入:2.38400时,它仍然显示3小数,忽略了零。我还想计算这些零,以得出结果为5

我该如何解决?

3 个答案:

答案 0 :(得分:0)

尝试一下

String text = YOUR_EDIT_TEXT.getText().toString().trim();


String[] arr = text.split("\\.");

int noOfDecimalPlaces = arr[1].length();

希望这会有所帮助。随时要求澄清...

答案 1 :(得分:0)

根据https://www.baeldung.com/java-separate-double-into-integer-decimal-parts,这是窍门:

double doubleNumber = 24.04;
int intPart = (int) doubleNumber;
System.out.println("Double Number: " + doubleNumber);
System.out.println("Integer Part: " + intPart);
System.out.println("Decimal Part: " + (doubleNumber - intPart));

答案 2 :(得分:0)

 String text = "34.0003400";

 int noOfDecimalPlaces = text.length() - text.indexOf(".") - 1;

更新

String text = "3454";
        int noOfDecimalPlaces;
        if (text.indexOf(".") != -1) {
            noOfDecimalPlaces = text.length() - text.indexOf(".") - 1;
        } else {
            noOfDecimalPlaces = 0;
        }