如何生成Scala Range for Double?

时间:2019-07-17 06:29:21

标签: scala

我无法为Double生成Scala范围。

我已经阅读了StackOverflow,有很多片段显示了双倍范围,但是在我的Scala REPL 2.13.0中都没有作用

9.474 to 49.474 by 1.0
1d to 1000d by 1d
(1.0 to 2.0 by 0.01)
            ^
       error: value to is not a member of Double

我无法习惯在Scala REPL中生成双倍范围的原因是什么

我在使用Scala 2.13.0的macOS上

1 个答案:

答案 0 :(得分:5)

在Scala 2.12中,我收到了弃用警告:

scala> 9.474 to 49.474 by 1.0
<console>:12: warning: method to in trait FractionalProxy is deprecated (since 2.12.6): use BigDecimal range instead
       9.474 to 49.474 by 1.0

因此,也许在2.13中不再受支持。根据警告,您可以执行以下操作:

scala> BigDecimal(9.474) to BigDecimal(49.474) by BigDecimal(1.0)
res6: scala.collection.immutable.NumericRange.Inclusive[scala.math.BigDecimal] = NumericRange 9.474 to 49.474

这也有效:

BigDecimal(9.474) to BigDecimal(49.474) by 1

如果您在两个版本上都使用.foreach(println),则会看到没有BigDecimal的结果看起来不是很好:

9.474
10.474
..
31.474
32.474000000000004
33.474000000000004
...

来自Release Notes

  

整个标准库中已弃用的各种方法和类已完全删除。