开发者学堂课程【Scala 核心编程-基础:Scala 浮点型】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8893
Scala 浮点型
目录
一、浮点类型
1、基本介绍
Scala 的浮点类型可以表示一个小数,比如123.4f,7.8,0.12等。
2、浮点型的分类
Float [4] 32位,IEEE 754标准的单精度浮点数
Double [8] 64位,IEEE 754标准的双精度浮点数
二、浮点型使用细节
1、与整数类型类似,Scala 浮点类型也有固定的表数范围和字段长度,不受具体 OS 的影响。
Scala 的浮点类型也有固定的长度,不受操作系统影响,因为它是跨平台的。
2、Scala 的浮点型常量默认为Double 型,声明 Float 型常量,须后加‘f'或‘F'。
需要声明的是,float 的常量默认为 Double 型。在声明 Float 类型的时候要加 f 或者是大写的 F。
例:
(1) var f1:Float = 1.1 //把1.1给 float 会不会报错?
这里把 double 给了一个 float,显然是要报错的。
(2) var f2 = 1.2 //把1.2给 f2会不会报错?
这个 f2没有指定类型,不会报错。因为用类型推导。编译器是很聪明的,没有指定类型,就使用类型推断。
(3) var f3:Double = 1.3 //把1.3给 Double 可以吗?
可以
(4) var f4:Float = 1.4f //把1.4带 f 给 Float 可不可以?
可以
(5) var f5:Double = 1.5f //把1.5f给Double可不可以?
虽然是 float 的类型,但 Double 是高精度,把低精度给高精度是可行的。这是 float 给 Double,因此可行。
3、浮点型常量有两种表示形式
十进制数形式,如: 5.12 512.0f .512 (必须有小数点)
科学计数法形式,如: 5.12e2 = ? 5.12E-2 = ?
5.12e2 = 5.12乘以10的2次方
5.12E-2 = 5.12除以10的2次方
4、通常情况下,应该使用 Double 型,因为它比 Float 型更精确(小数点后大致7位)
float 的精度保留了多少位?大致是小数点后7位。
测试数据: 2.2345678912f , 2.2345678912
2.2345678912f , 2.2345678912这两个案例,数据精度会有损失。
打开 TyepDemo03.scala 编辑:
……
var num1:Float = 2.2345678912f
var num2: Double = 2.2345678912
println("num1=" + num1 + "num2=" + num2)
……
有一个变量 num1,把2.2345678912f这个值给它。是 float 类型。又有一个变量 num2,是 double 类型,给2.2345678912这个值。
运行结果:
long 的最大值9223372036854775807~- 9223372036854775808
num1=2.2345679num2=2.2345678912
运行结果发现 num1的精度有丢失。num1变成2.2345679,后面的12被四舍五入舍去了,大概精确到第七位。将来用float 的时候,如果精度在小数点后七位以内就可以用。但是超过就不行。也可以看到 num2没有丢失精度,Double的精度很高。