Kotlin基础之基本数据类型

本文介绍了Kotlin中的基本数据类型,包括整数类型(Byte, Short, Int, Long)及其取值范围,以及浮点数类型(Float, Double)的精度特点。浮点数在内存中遵循IEEE754标准,可能导致精度损失。示例展示了数值类型的自动推断和精度损失情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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官方文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值