Если вам надоело создавать BigDecimal
в две строки, BigDecimal
имеет конструкторы, которые принимают Int
, которые вы можете вызвать напрямую:
val bigDecimalInt = BigDecimal(1)
Это хорошо для целочисленных значений, НО для значений с плавающей точкой, таких как Double
конструктор и toBigDecimal
на самом деле ведут себя по-разному. Конструктор создает значение BigDecimal передаваемого значения Double
, которое будет «неправильным», если это значение не может быть точно представлено в арифметике с плавающей точкой. toBigDecimal
преобразует значение в строку и затем использует то, что дает "правильное" значение.
val doubleNum:Double = 0.1
println(doubleNum.toBigDecimal()) // prints 0.1
val bigDecimal:BigDecimal = BigDecimal(0.1)
println(bigDecimal) // prints 0.1000000000000000055511151231257827021181583404541015625
Если ничего из этого не имеет смысла, вам, вероятно, нужно прочитать об арифметике с плавающей запятой, это обычное явление. проблема, затрагивающая все / большинство языков программирования
Так что toBigDecimal
более безопасный вариант