我编写了一个Python脚本来计算阶乘,并用1000来测试它!但是当我放1000的时候!进入我的mac内置计算器,检查计算,它返回“不是一个数字”。我做了一些测试,发现内置的计算器只能计算到101的阶乘。这是为什么呢? 问题来源StackOverflow 地址:/questions/59383266/why-is-it-that-my-computers-built-in-calculator-can-only-calculate-up-to-101-fac
数字对应1000!比你的计算器用来存储数字的要大。这个数字实际上有2568个数字,即:
import math
print(len(str(math.factorial(1000))))
# 2568
您的计算器使用预先确定的内存量来存储单个数字。在给定的比特数中存储数字有几种不同的方法。流行的方法是float和int。 假设您的计算器使用64位,它们将变成float64或int64,分别可以容纳2 ** 1023 ~ 9e+307或2 ** 63 ~ 9223372036854775808。 相比之下,Python整数具有任意精度,这意味着任何任意大的数字(只要系统中有可用内存)都将在Python中精确地表示出来。 这种选择的代价最终是速度和内存消耗: 在一些应用中,这些缺点通常是不相关的,而在另一些应用中(例如,数值分析),这些缺点是非常重要的。 但是不要担心,Python提供了大量的工具和库来在需要时使用固定精度的数字,其中最突出的可能是NumPy。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。