如何解决十进制模块在二进制级别上不起作用?怎么样?
关于启动程序时后台发生的事情,我是一个初学者。现在,我的重点是“ Python”中“小数”和“浮点数”之间的区别。我阅读了以下有关此内容的文章:
是的,我现在知道“小数”的含义以及如何使用此模块。但是,我在下面的句子后面问“十进制”如何工作:
“与浮点数不同,在十进制模块中定义的十进制对象不容易失去精度,因为它们不依赖于二进制分数。”
据我所知,计算机只能与二进制数字系统一起使用。所以我的问题是:当计算机不以二进制级别处理时,计算机如何处理和使用“十进制”模块?
解决方法
在这种情况下,“二进制分数”-是一种将浮点值存储在内存中的方法。或者更确切地说,将任何基数的浮点数表示为二进制。 是的,所有内容都存储为二进制文件,并且计算机确实在较低级别上运行二进制文件。 但是,在较高的层次上,我们很少单独使用二进制文件。我们使用字符串,整数,浮点数等。它们只是一种方便的抽象方法,使人们可以更轻松地使用它。
回到您的问题:
Python的float
确实将其值存储为二进制表示形式。这正是它可能产生精密工件的原因。
另一方面,小数不表示浮点数的整体。它将数字的所有部分分开保存,然后分别进行操作。
并且不要忘记,Decimal
-是一个类,而不是原子类型。
这是Decimal来源的摘录:
if intpart is not None:
# finite number
fracpart = m.group('frac') or ''
exp = int(m.group('exp') or '0')
self._int = str(int(intpart+fracpart))
self._exp = exp - len(fracpart)
self._is_special = False
如您所见,它检索整数,指数和其他实用程序数据并将它们分别存储。
十进制的精度是以计算和内存资源为代价的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。