python浮点数怎么运算_为什么说浮点数缺乏精确性? python中浮点数运算问题

我想从两个角度回答:

一:十进制小数转化成二进制小数的方法。(简单举例,看完就可以自己用笔进行运算。)

二:如何解决python中的浮点数运算问题。

关于一:

拿1.375这个十进制数举例,python解释器会将这个十进制数字转化成二进制,然后计算机内部对二进制进行计算后,输入回解释器,解释器再将二进制转化成十进制呈现给我们。

我们看看1.375换算成二进制的过程:

“.”前面的不用说了,就是1,“.”后面的是0.375。0.375=3/8,3/8=3*2^-3;3在二进制中是11,那么根据^-3这个位置提示符可知这个11在“0.”往后数三位的位置落位,位数不够拿0补,也就是0.011,那么十进制1.375转化成二进制就是1.011。

实在抱歉,我无法用更白的话去讲这个过程了,有兴趣的朋友可以拿笔对照计算器的结果试验几次。

如果掌握了这个计算方法,我们就会发现,0.1这个十进制数字想换算成二进制,会变成0.0001100.....110.....无穷无尽的1和0,那么这个二进制再转化成十进制时,自然就会产生错误。

而类似0.1这样的例子还有很多,这就是python(其它解释器也一样)浮点数计算会产生问题的原因。

关于二:

为避免浮点数运算错误,我们要使用python内置的“round”和“decimal”对浮点数进行运算。

前者对浮点数运算结果进行标准的四舍五入。后者采用的是“奇进偶不进”的取舍选择,也就是俗称的银行家算法。

可即便这样,少许运算结果还是会出现错误,这时我们就需要借助“format”这个函数,这个函数可以对运算结果进行格式化,得到我们想要的结果。

想要知道上述三个函数的具体使用方法搜相关文档即可。

用手机码字,所以请原谅错别字和随性的表达方式。

回答完毕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值