写在前面:
本次的选题主要围绕浮点数的IEEE标准表示方法以及相应精度的分析,认真完成本次选题可以对浮点数在计算机中的存储形式有一个更深刻的理解,对IEEE标准的表示方法也更加熟练。
本文所有题目由全组同学共同完成,感谢每一位同学的支持与付出。
一、选题
选题一
某银行一直采用32位的float型来存储用户的存款余额,为了吸引土豪们来存款,推出如下措施:土豪可以与银行协商存款的方式。
- 土豪A携一个小目标来存,因为他喜欢财富增长的感觉,所以要求只存一块钱,即存款程序循环执行一亿次,每次余额增加1.0,但最后发现余额只有一千六百余万;
- 土豪B携0.3个小目标来存,他的要求比较奇特:“我只存25000000,剩下的5000000无偿捐赠给银行,但我要你们给我存的每块钱都加上利息!” 银行经理想了一下,一块钱能有多少利息(按天约0.3%)?还能白赚五百万,果断答应了土豪的要求。即存款程序循环执行25000000次,每次余额增加1.03,结果余额有三千三百余万!
- 土豪C欲效仿土豪B,携一个小目标存款,将其中的0.1个小目标捐赠给银行后,也按照每一块钱都加上利息的方式存款,结果却损失不小。
- 请仔细分析产生这些结果的原因,并找出各种情况下不会出现错误的临界值。
- 假如来存款的土豪身家不会超过N(例如N=100亿),那么是否可以通过调整阶码与尾数的位数来避免这些情况?要如何调整?