为什么涉及金额的数据类型不使用float

 我来答
大沈他次苹0B
2022-07-13 · TA获得超过7332个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:178万
展开全部

首先,所有的数据在计算机中以二进制来存储的数据。
所以,先将 浮点数数据转换为二进制表示
例如:36.7:
整数部分的二进制表示是很简单的:除二取余法(将整数除以二取出余数,最后倒序排列)
36的二进制表示为100100
小数部分的二进制表示:将小数部分乘以2,取整数部分的值,知道小数部分为0或位数满了
0.7的二进制表示为101100(1100无限循环)。。。。。
最终37.6的二进制表示为100100.10110011001100...

32位存储方式
在IEEE754标准出现以前,每个厂商对于浮点的存储方式各不相同。

通过理解float的存储方式知道为什么不存储金额了吧。
float的存储方式一定导致尾数部分是有误差的,因为尾数位的存储是有一定尾数限制。这种误差会导致因为float数据之间操作而扩大。例如两个误差的数据相加,结果的误差将会放大。所以对于对于精确度比较敏感的数据例如金额,航天军工数据是不能使用float的。

两个小工具:
1.浮点数的IEEE754内存状态
https://www.h-schmidt.net/FloatConverter/IEEE754.html
2.进制转换网站
https://tool.oschina.net/hexconvert

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式