2021年6月14日 / 38次阅读 / Last Modified 2021年6月14日
数值计算
很奇怪的一个topic,对吧。。
其实,我们日常生活中使用的浮点数计算,或者说小数计算,都是 decimal float point。而计算机使用的浮点数计算,是 binary float point。
decimal float point 计算的特点是,以1/10为单位进行细分,比如0.1是对1的细分,可以有0.2,0.3,0.5......等等,将1的长度,等分成10分。binary float point,由于表达受限,它的计算特点是,以1/2为单位进行细分。这就是两个不同的float point在计算时的重要区别!
虽然在有限位数的情况下计算,不管是decimal还是binary,都有精度问题,但是这两者的精度问题的表现是不一样的。当我们需要满足日常 decimal float point 的计算要求时,就要注意了:
>>> from decimal import *
>>> Decimal('0.1') + Decimal('0.1') + Decimal('0.1')
Decimal('0.3')
>>>
>>> 0.1+0.1+0.1
0.30000000000000004
Python标准库中提供的decimal模块,可以辅助我们在程序中,按照 decimal float point 的方式进行计算!
-- EOF --
本文链接:https://www.pynote.net/archives/3725
《理解 binary float point》有1条留言
前一篇:一维ndarray
后一篇:对 List 对象做数乘
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记
You need to read it: https://docs.python.org/3/tutorial/floatingpoint.html [ ]