2016-09-29 9 views
0

Я обработал 500 как BigDecimal в java. И я превратился в {・UnscaledValue = 5 ・Scale = -2 ・Precision = 0} Я действительно не понимаю, почему точность равна 0. Я думал, что это может быть 1. Может кто-нибудь объяснить?Что означает большая десятичная точность, равная нулю в java

+4

Покажите нам свой код plz. – passion

+0

Есть ли причина, по которой вам нужно знать, или просто любопытно (я тоже)? –

+1

Я голосую, чтобы закрыть этот вопрос, потому что, без кода, непонятно, что вы спрашиваете. Это может быть хорошим вопросом, но ему нужен код. –

ответ

2

Точность для 500, построенной в наиболее простом способе, является 3.

scala> new java.math.BigDecimal("500").precision() 
res0: Int = 3 

Если вы сделали что-то другое, вы должны показать код, чтобы мы знали, что вы сделали.

Значение precision от the documentation:

Точности этого количество цифр в немасштабированном значении. Точность нулевого значения равна 1.

+0

Если масштаб равен -2, а значение unscaledValue равно 5, то оно, очевидно, сохраняется как 5 * 10^2. Тогда точность должна быть 1, а не 0, а не 3. –

+0

. Я тоже получаю 3. Я также пробовал «новый BigDecimal (500.0)», а еще 3 и шкала 0. Я до сих пор не понял, как OP может получить точность 0. –

+0

@ OleV.V .: Не создавайте экземпляр BigDecimal из типа с плавающей точкой (double). Но если вы это сделаете, скажите: 'x = новый BigDecimal (« 5e2 »)' или что-то вроде 'x = new BigDecimal (« 5 »). MovePointRight (2);' или из простого calucaltion вы можете получить ' unscaledValue' '' '' '' '' '' '' ''. Поэтому единственная проблема: почему точность '0'. Это должно быть «1», по определению. –