Сколько десятичных разрядов в Двойном (Java)

Есть ли любой в созданной функции в Java, чтобы сказать мне сколько десятичных разрядов в двойном. Например:

101.13 = 2
101.130 = 3
1.100 = 3
1.1 = 1
-3.2322 = 4 etc.

Я рад преобразовать в другой тип сначала в случае необходимости, я посмотрел на преобразование в bigdecimal сначала без удачи.

7
задан Artemix 28 November 2012 в 13:31
поделиться

3 ответа

Нет.

1.100 и 1.1 - это одно и то же значение (они представлены точно так же побитно в double ).

Следовательно, вы никогда не сможете получить такую ​​информацию от двойника .

Единственное, что вы можете сделать, - это получить минимальное количество десятичных цифр, необходимое для преобразования десятичного числа в то же значение double . И это так же просто, как вызвать Double.toString () и проверить количество десятичных цифр.

9
ответ дан 6 December 2019 в 06:02
поделиться

Вы можете использовать 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 (они точно такие же двойные), как указывали другие.

14
ответ дан 6 December 2019 в 06:02
поделиться

Число десятичных знаков в двойном значении равно 16.

64-битные числа. 52-битная Мантисса. 52 бита - это примерно 16 десятичных цифр.

См. http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html .

double, значения которого включают 64-битные числа с плавающей запятой IEEE 754.

См. http://en.wikipedia.org/wiki/IEEE_754-2008

3
ответ дан 6 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: