Я определил formatter
примерно так:
>>> import java.text.NumberFormat
>>> val formatter = NumberFormat.getInstance()
Может показаться, что результатом formatter.parse("1,000")
будет Long
:
>>> formatter.parse("1,000")::class
class kotlin.Long
Однако, если я пытаюсь передать его конструктору BigDecimal
, я получаю сообщение об ошибке, в котором говорится, что он не соответствует ни одному из конструкторов:
>>> BigDecimal(formatter.parse("1,000"))
error: none of the following functions can be called with the arguments supplied:
public constructor BigDecimal(p0: BigInteger!) defined in java.math.BigDecimal
public constructor BigDecimal(p0: CharArray!) defined in java.math.BigDecimal
public constructor BigDecimal(p0: Double) defined in java.math.BigDecimal
public constructor BigDecimal(p0: Int) defined in java.math.BigDecimal
public constructor BigDecimal(p0: Long) defined in java.math.BigDecimal
public constructor BigDecimal(p0: String!) defined in java.math.BigDecimal
BigDecimal(formatter.parse("1,000"))
^
Это несмотря на это
>>> formatter.parse("1,000") == 1000L
true
Есть идеи, что я здесь не так делаю?