小记-----一道奇怪的题

今天一位刚进公司不久的PHP的同事出了一道题,我答错了,很是得意。我在公司可能算经验比较丰富、比较有资历的吧,所以能出道我打错的题,可能认为是一件值得骄傲的事情,估计公司里面有这样变态心理的同事不止他一个。不过看淡就好,因为知道自己目标是什么?想要什么?其他的就不是很重要了。

我们来看看这道题:

(int)((0.1+0.7)*10)

这道题我一看最初直接认为答案应该是0。因为以为小数直接取整再乘就为0了,但是0.1+0.7还有个括号啊,所以答案0是错误的。那么答案是多少呢?

我们在eclipse输出的一下,居然输出的是7.我们直接分析一下,因为寄存器的关系,0.1最终存储的二进制是0.09999,而0.7二进制存储的是0.69999,所以2个加起来是0.79998的样子,再和10相乘,那么这个计算结果再被强制int了就为7了。OK,到这里原来终于明白了,看来这是一道比较深的题,要知道到计算机底层原来才看的透。那么小数比如0.1为什么存的是0.09999呢?因为小数不能被2整除,所以一直为9999存储。好了,道理讲出来就简单了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值