(expt 64 20) 1329227-6ren">
gpt4 book ai didi

clojure - 为什么 Clojure 数字在 REPL 中以 "N"结尾?

转载 作者:行者123 更新时间:2023-12-04 03:15:38 25 4
gpt4 key购买 nike

所以,我捕获了最新的数字塔进行了几次快速计算,并注意到返回的数字末尾有“N”。为什么?这是什么意思?

clojure.math.numeric-tower=> (expt 64 20)
1329227995784915872903807060280344576N
clojure.math.numeric-tower=> (expt 36 20)
13367494538843734067838845976576N

最佳答案

那是 BigInt 的字面形式:

user=> (type 1N)
clojure.lang.BigInt

对比,例如:
user=> (type 1)
java.lang.Long

或者
user=> (type 1.0)
java.lang.Double

还有 M BigDecimal的后缀.
user=> (type 1M)
java.math.BigDecimal

我不确定提升到任意精度(BigInt、BigDecimal)的所有规则。我认为大多数“常规”数学函数不会提升到任意精度,但有一些可以做到(例如 +'-'*'inc'dec' )。

例如普通 +溢出:
user=> (+ Long/MAX_VALUE 1)
ArithmeticException integer overflow clojure.lang.Numbers.throwIntOverflow (Numbers.java:1388)

但是 +'促进:
user=> (+' Long/MAX_VALUE 1)
9223372036854775808N

关于clojure - 为什么 Clojure 数字在 REPL 中以 "N"结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24068156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com