gpt4 book ai didi

scala - 为什么 Scala 2.11.2 会给我科学记数法 float 的编译错误?

转载 作者:行者123 更新时间:2023-12-02 15:26:42 25 4
gpt4 key购买 nike

我最近刚刚将 Scala 项目从 2.10 更新到 2.11.2。

对于以下代码:

 if( x < 1.e-150 ) // conditional ops... 

我收到错误

e is not a member of Int

以前的科学概念是行得通的。我怀疑这不是 2.11 的事情,但更可能是升级过程中出现了一些奇怪的情况,这在很大程度上只是更新 sbt 文件的情况:

scalaVersion := "2.11.2"

之前的位置:

scalaVersion := "2.10.3"

我想不出是什么原因造成的。我所知道的是它在 2.10 下工作得很好。

有人以前见过这个问题或者可以建议修复吗? (或新的询问线!)

我使用的是 JDK 1.7.0_21 和 sbt.version=0.13.5

任何帮助或想法表示赞赏。

最佳答案

科学记数法的语法是 Scala,它是一个 float ,后跟 e(或 E)和指数。您看到的问题是 float 的计算方式发生了变化,并且与科学记数法的语法没有任何关系(尽管这确实导致了错误消息的困惑)。

您可以通过启动 2.10.4 REPL 并启用 -deprecation 来确认这一点:

scala> val x = 1.
<console>:1: warning: This lexical syntax is deprecated. From scala 2.11, a dot
will only be considered part of a number if it is immediately followed
by a digit.
val x = 1.
^

果然,在 2.11 中这根本无法编译。

您可以通过编写 1e-1501.0e-150 来完成完全相同的事情,这两者都可以在 2.10 或 2.11 中工作。

关于scala - 为什么 Scala 2.11.2 会给我科学记数法 float 的编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25806159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com