聊一聊float和double数字类型

一,什么是浮点?

“浮点”是相对“定点”而言的,表示存储时小数点的位置是不固定的,浮动的。
为什么要使用浮点数呢?答案是为了节约存储空间。例如:
如果一个变量可能会被用来存储这两个数:10000.0和0.00001。如果用定点数,那么这个变量至少可以保存:
10000.00000
00000.00001
可见用定点数,必须一个0都不能少,原原本本地保存下来。而使用浮点数,就可以保存:
小数:1 指数:10的4次方
小数:1 指数:10的-4次方
只需要保存小数部分和小数点的位置就可以了。这样就大大节省了存储空间。注意指数的底数通常不用10,而是用e。

注意浮点数是不精确的,根本原因是二进制可以表示连续的整数,但是却不能够表示连续的小数。下面这篇文章分析的很好:

浮点数为什么不精确

二,什么是精度?

精度就是计算机中用来存储一个数值时用得长度。通常这样命名:
16位 半精度
32位 单精度
64位 双精度
128位 四精度

明白了精度和浮点数,float和double就非常简单了:

FLOAT
Float是单精度浮点数类型。我们来详细看float的存储:长度为32位,其中符号位占1位(bit),指数部分占8位,尾数部分占23位。

DOUBLE
Double是双精度浮点数类型。
由此可见double比float更精确,能表达的数字范围更大。代价是double比float更占存储空间,计算速度更慢。

由于浮点数是不精确的,因此通常使用它做科学计算和工程计算。因为这些场景下,数字不要求100%精确,只要达到实际所需的标准就可以了。例如桥的高度,并不需要桥两头的高度都是10米整,只要两边高度的误差小于±0.001米我们就认为桥是平的。
而在财务计算中这样的误差则不能容忍,微小的误差累积,可能会导致巨大的差异。因此在财务计算中必须使用decimal这样的精确数。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值