Я обработал 500 как BigDecimal в java. И я превратился в {・UnscaledValue = 5 ・Scale = -2 ・Precision = 0}
Я действительно не понимаю, почему точность равна 0. Я думал, что это может быть 1. Может кто-нибудь объяснить?Что означает большая десятичная точность, равная нулю в java
ответ
Точность для 500, построенной в наиболее простом способе, является 3.
scala> new java.math.BigDecimal("500").precision()
res0: Int = 3
Если вы сделали что-то другое, вы должны показать код, чтобы мы знали, что вы сделали.
Значение precision
от the documentation:
Точности этого количество цифр в немасштабированном значении. Точность нулевого значения равна 1.
Если масштаб равен -2, а значение unscaledValue равно 5, то оно, очевидно, сохраняется как 5 * 10^2. Тогда точность должна быть 1, а не 0, а не 3. –
. Я тоже получаю 3. Я также пробовал «новый BigDecimal (500.0)», а еще 3 и шкала 0. Я до сих пор не понял, как OP может получить точность 0. –
@ OleV.V .: Не создавайте экземпляр BigDecimal из типа с плавающей точкой (double). Но если вы это сделаете, скажите: 'x = новый BigDecimal (« 5e2 »)' или что-то вроде 'x = new BigDecimal (« 5 »). MovePointRight (2);' или из простого calucaltion вы можете получить ' unscaledValue' '' '' '' '' '' '' ''. Поэтому единственная проблема: почему точность '0'. Это должно быть «1», по определению. –
Покажите нам свой код plz. – passion
Есть ли причина, по которой вам нужно знать, или просто любопытно (я тоже)? –
Я голосую, чтобы закрыть этот вопрос, потому что, без кода, непонятно, что вы спрашиваете. Это может быть хорошим вопросом, но ему нужен код. –