关于int型和float型相乘的问题

问题描述,比如int a = 58   如果直接用a*0.006在我的代码里运行出来是0.34800000000000003 而我们手算,结果应该是0.348?

为什么会出现这样的情况呢,因为0.006是一个float型的数据,我们看它是0.006,但是他在内在里就不一定是0.006,它可以是0.00599999999999999,或者0.006000000000000001,因为浮点型的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38

float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;也就是说float型可能存在一位是不能保证有效的,所以就会出现上面那种情况了



  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值