Float Double Decimal 区别

 我来答
天罗网17
2022-06-13 · TA获得超过6199个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:73.6万
展开全部

本文介绍 浮点数和定点数的区别,以及float和double的区别
另外介绍了decimal以及使用场景

我们知道, 整数 在计算机内部的表示方法都是2^n + 2^n-1+...+ 2^2 + 2^1 + 2^0.来加起来的
那么 小数 该如何表示呢?

在计算机内部,小数有两种表示方法: 定点数和浮点数

定点数,顾名思义,可以理解为小数点的位置是固定

图中,一共用32位长度来表示一个定点数,其中:

  可见总长度一定的情况下,如果整数位的长度越大,能代表的数值范围就越大,但是精度就会越小.
如果小数位的长度越大,代表的数值范围越小,但是精度会变大.
显然, 范围和精度,在计算机内部,是一对天然矛盾体.

浮点数的表示方法,跟科学记数法有点类似.
图中是一个float类型的数字表示

表示方法为 (-1)^s * f * b^e
具体的说,这个实数由一个数 乘以 2 的整数次幂得到

图中

float和double的范围是由指数的位数来决定的。
float的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位) 8bits(指数位) 23bits(尾数位)
double:
1bit(符号位) 11bits(指数位) 52bits(尾数位)

float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

那么可以参考 这篇文章
float和double还是二进制的value来表示十进制的数字
但是,decimal本身就是十进制的value,(注意,decimal仍然是个浮点类型)

人类发明的任何概念,比如金融数据和比赛分数,适用于decimal
而其他的一些自然数据,当我们对精度要求不高的时候,可以使用float/double

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舒仕福
2023-07-11 广告
eor有以下两种含义:1. eor是计算机术语,表示二进制异或运算。在计算机逻辑运算中,算术逻辑执行二进制按位异或运算,两数执行异或后相同位结果为0,不同位结果为1。2. eor也表示在任何时期,向地层中注入流体、能量,以提高产量或采收率的... 点击进入详情页
本回答由舒仕福提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式