Kotlin基础之基本数据类型

Kotlin基础

基本数据类型

1、整数

类型大小(bit)最大值最小值
Byte8-128127
Short16-3276832767
Int32-2^312^31 -1
Long64-2^642^64 -1

示例

val a = 100  		//Int  自动类型推断
val b = 30000000000  //long 超过Int最大值,自动推断为Long
val l = 1L  		//设置为Long
val byte:Byte = 1  	//Byte

2、浮点数

对于浮点数,Kotlin 提供了 Float 与 Double 类型。 根据 IEEE 754 标准, 两种浮点类型的⼗进制位数(即可 以存储多少位⼗进制数)不同。 Float 反映了 IEEE 754 单精度,⽽ Double 提供了双精度。

类型大小(bit)符号位有效数字bit位数指数bit位数十进制有效位数
Float3212387-8(超过8位会发生精度损失)
Double631521116-17(超过17位会发生精度损失)

对于以⼩数初始化的变量,编译器会推断为 Double 类型。 如需将⼀个值显式指定为 Float 类型,请添加 f 或 F 后缀。 如果这样的值包含多于 6〜7 位⼗进制数,那么会将其舍⼊。

val pi = 3.14			//默认为Double
val a = 2.7182818284f	//Float,实际值为 2.7182817(精度损失)

为何会出现精度损失?

1、拿Float举例,Float有效数字位数为24位,其中第一位为符号位,内存模型如下

Float
计算公式:

Float计算公式
由于有效数字位数(M)为23位(不包含符号位),所以M的最大值为 2^23 = 8388608(即1M = 1.8388608),所以Float能表示的十进制的最大有效位数为8位(不是所有的8位都能表示),所以说Float的十进制有效位数为7-8位。更详细解析可查看:

关于浮点数丢失精度的原理

2、由于阶数跳跃导致的精度误差,可参考资料

Java中浮点数原理及精度丢失问题

参考资料

  1. 关于浮点数丢失精度的原理
  2. Java中浮点数原理及精度丢失问题
  3. Kotlin官方文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值