将文字分配给Float时类型不匹配错误

问题描述 投票:2回答:3

我明确指定了float类型。此代码产生了错误。为什么?

当前,我正在使用scala v2.12.8

scala> val f: Float = 3.0
<console>:11: error: type mismatch;
 found   : Double(3.0)
 required: Float
       val f: Float = 3.0
scala floating-point literals
3个回答
3
投票

使用以下代码:

val f: Float = 3f

如果不添加f后缀,则该变量将被视为double。

是同一件事,在Java中会发生,因为DoubleFloat分别包裹了Java的doublefloat

jshell> float f = 3.0
|  Error:
|  incompatible types: possible lossy conversion from double to float
|  float f = 3.0;
|            ^-^

jshell> float f = 3.0f
f ==> 3.0

2
投票

要使用浮点数,必须在其后加上f

scala> val f: Float = 3.0f
f: Float = 3.0

默认情况下,浮点数是Double,例外情况提示。

floating-point-literals(由Mario Galic提供:)>

浮点文字的类型为Float,后跟浮点点类型后缀F或f,否则为Double类型。


1
投票

此行为已在Scala 3(Dotty)中修复:

© www.soinside.com 2019 - 2024. All rights reserved.