Почему есть неявное преобразование из Float/Double в BigDecimal, но не из String?

Хотя ситуация с преобразованием из Doubles в BigDecimals немного улучшилась по сравнению с Java

scala> new java.math.BigDecimal(0.2)
res0: java.math.BigDecimal = 0.20000000000000001110223024625156...

scala> BigDecimal(0.2)
res1: scala.math.BigDecimal = 0.2

и вещи вроде

val numbers: List[BigDecimal] = List(1.2, 3.2, 0.7, 0.8, 1.1)

работают действительно хорошо, не было бы разумно иметь неявное преобразование вроде

implicit def String2BigDecimal(s: String) = BigDecimal(s)

доступное по умолчанию, которое может преобразовывать строки в BigDecimals подобным образом?

val numbers: List[BigDecimal] = List("1.2", "3.2", "0.7", "0.8", "1.1")

Или я чего-то не понимаю, и Scala решила все "проблемы" Java с использованием конструктора BigDecimal со значением с плавающей точкой вместо String, и BigDecimal(String) в Scala в принципе больше не нужен?

6
задан Dave Griffith 16 January 2011 в 18:51
поделиться