MiP*_*MiP 7 jvm scala language-design
Scala中int,float和long的最大值为:
Int.MaxValue = 2147483647
Float.MaxValue = 3.4028235E38
Long.MaxValue = 9223372036854775807L
来自Scala编译器的作者,Keynote,PNW Scala 2013,幻灯片16 What's Int.MaxValue between friends?
:
val x1: Float = Long.MaxValue
val x2: Float = Long.MaxValue - Int.MaxValue
println (x1 == x2)
// NO WONDER NOTHING WORKS
Run Code Online (Sandbox Code Playgroud)
为什么这个表达式会返回true
?
Mik*_*len 12
A Float
是4字节浮点值.同时a Long
是8字节值,Int
也是4字节值.但是,数字以4字节浮点值存储的方式意味着它们只有大约8位精度.因此,无论最少4个有效字节(另外9-10个数字)的值如何,它们都不具有存储长度的4个最高有效字节(大约9-10个数字)的能力.
因此,Float
两个表达式的表示是相同的,因为不同的位低于a的分辨率Float
.因此,这两个值相等.
归档时间: |
|
查看次数: |
3009 次 |
最近记录: |