为什么对1e9+7和对1000000007取模得到的值不一样

 

看第一行输出和第二行输出的结果,一个带小数点一个不带。带小数点的浮点数在cpu中计算64位编码和整数64位编码是不一样的。可以参考浮点数的IEEE 754标准。为了保证浮点数有更广的取值范围,是需要牺牲精度来换取值范围的。不然64位最多只能取到2的64次方-1的正数,再多就无法表示了。但是使用浮点数,打个比方。4位表示数值,60位用来表示进位,那最多可以表示2的4次方*2的60次方,这样范围就大了。如有帮助请采纳

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

这个有误差是正常的,精度丢失是所有编程语言的通病,你使用decimal这个模块试试

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢