【发布时间】:2011-01-16 11:31:37
【问题描述】:
虽然从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)
默认可用,可以像这样将Strings转换为BigDecimals?
val numbers: List[BigDecimal] = List("1.2", "3.2", "0.7", "0.8", "1.1")
或者我错过了什么,Scala 使用带有浮点值的 BigDecimal 构造函数而不是 String 解决了 Java 的所有“问题”,而在 Scala 中基本上不再需要 BigDecimal(String) 了吗?
【问题讨论】:
-
这和Java语言本身关系不大,为什么要标记为“Java”?
标签: scala floating-point implicit bigdecimal