我明确指定了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
使用以下代码:
val f: Float = 3f
如果不添加f
后缀,则该变量将被视为double。
是同一件事,在Java中会发生,因为Double
和Float
分别包裹了Java的double
和float
:
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
要使用浮点数,必须在其后加上f
:
scala> val f: Float = 3.0f
f: Float = 3.0
默认情况下,浮点数是Double
,例外情况提示。
从floating-point-literals(由Mario Galic提供:)>
浮点文字的类型为Float,后跟浮点点类型后缀F或f,否则为Double类型。
此行为已在Scala 3(Dotty)中修复: