Есть ли любой в созданной функции в Java, чтобы сказать мне сколько десятичных разрядов в двойном. Например:
101.13 = 2
101.130 = 3
1.100 = 3
1.1 = 1
-3.2322 = 4 etc.
Я рад преобразовать в другой тип сначала в случае необходимости, я посмотрел на преобразование в bigdecimal сначала без удачи.
Нет.
1.100 и 1.1 - это одно и то же значение (они представлены точно так же побитно в double
).
Следовательно, вы никогда не сможете получить такую информацию от двойника
.
Единственное, что вы можете сделать, - это получить минимальное количество десятичных цифр, необходимое для преобразования десятичного числа в то же значение double
. И это так же просто, как вызвать Double.toString ()
и проверить количество десятичных цифр.
Вы можете использовать BigDecimal.scale (), если передадите число в виде строки, например:
BigDecimal a = new BigDecimal("1.31");
System.out.println(a.scale()); //prints 2
BigDecimal b = new BigDecimal("1.310");
System.out.println(b.scale()); //prints 3
, но если у вас уже есть число в виде строки, вы можете просто проанализировать строку с помощью регулярного выражения, чтобы узнать, сколько цифр есть:
String[] s = "1.31".split("\\.");
System.out.println(s[s.length - 1].length());
Использование BigDecimal может иметь то преимущество, что оно проверяет, действительно ли строка является числом; используя строковый метод, вы должны сделать это сами. Кроме того, если у вас есть числа как двойные, вы не можете различить 1,31
и 1,310
(они точно такие же двойные), как указывали другие.
Число десятичных знаков в двойном значении равно 16.
64-битные числа. 52-битная Мантисса. 52 бита - это примерно 16 десятичных цифр.
См. http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html .
double, значения которого включают 64-битные числа с плавающей запятой IEEE 754.