【发布时间】:2021-12-23 22:39:21
【问题描述】:
首先我找到+/⍎¨⍕(!8),结果是9。但如果我找到100!,因为数字很大,我无法得到。
⍎¨⍕(!100) 出现语法错误:⍎SYNTAX ERROR
有没有其他方法可以解决这个问题,或者你能建议我做一些修改吗?
【问题讨论】:
标签: math digits largenumber apl
首先我找到+/⍎¨⍕(!8),结果是9。但如果我找到100!,因为数字很大,我无法得到。
⍎¨⍕(!100) 出现语法错误:⍎SYNTAX ERROR
有没有其他方法可以解决这个问题,或者你能建议我做一些修改吗?
【问题讨论】:
标签: math digits largenumber apl
!100 是一个很大的数字,当你格式化它的结果时,你会得到一个用 E 表示法表示数字的字符串。
⍕!100 → '9.332621544E157',当您尝试评估 (⍎) 每个字符时遇到语法错误,因为 E 没有意义。
有两种方法可以将大整数拆分为数字:
首先是反解码,例子可以在APLcart找到
10⊥⍣¯1!100
然而,这很容易受到浮点不精确的影响。
第二个也是首选的选项是使用 dfns 库中的 big,可以使用 quad 函数 CY 导入。
'big'⎕CY'dfns'
例子here
谢天谢地,最后一个示例涵盖了您的确切情况!阶乘 100 是 ↑×big/⍳100
问题的最终解决方案可能如下所示:
+/⍎¨↑×big/⍳100
【讨论】:
big 运算符,甚至可能展示如何使用它计算最终总和?