如何在bash中处理值大于2^63的整数

如何在bash中处理值大于2^63的整数,bash,largenumber,Bash,Largenumber,看起来bash的最大有符号整数值是9223372036854775807(2^63)-1。bash有没有办法处理比这个更大的值?我需要处理高达100000000000000000001的数字,但我不确定如何在bash中实现这一点 A=10000000000000000000000000000 echo $A 10000000000000000000000000000 let A+=1 echo $A 4477988020393345025 编辑 感谢本杰明W.的评论。基于此,我尝试以下策略。这

看起来bash的最大有符号整数值是9223372036854775807(2^63)-1。bash有没有办法处理比这个更大的值?我需要处理高达100000000000000000001的数字,但我不确定如何在bash中实现这一点

A=10000000000000000000000000000
echo $A
10000000000000000000000000000
let A+=1
echo $A
4477988020393345025
编辑 感谢本杰明W.的评论。基于此,我尝试以下策略。这方面有什么明显的问题吗?这意味着,除了调用bc会影响性能之外,使用bc增加变量是否会带来复杂性

A=10000000000000000000000000000
echo $A
10000000000000000000000000000
A=$(bc <<< "$A+1")
echo $A
10000000000000000000000000001
A=100000000000000000000
回音$A
10000000000000000000000000000

A=$(bc我建议使用任意精度的
bc

Bash在263处溢出:

bc可以处理这一问题:

$ bc <<< "$A+1"
9223372036854775808
在算术上下文
(())
中,它们溢出:

$ echo $(( B ))
-9223372036854775808
因此,这种比较也不起作用:

$ (( B > A )) && echo true || echo false
false
使用bc处理这些问题:

$ bc <<< "$B > $A"
1

我要咬一口-为什么要使用Bash处理大数字?很少有编程语言支持大于64位的整数。Python有任意精度的整数,请尝试使用它。即使是我正在使用的gawk版本也不支持大数字,就像“-M”一样选项。除了处理这么大的值之外,我所有的基础设施都是用bash脚本编写的。bc是任意精确的:
bc谢谢。Python是我的下一站,但我希望bash能够支持它,然后再求助于它。
$ echo $(( B ))
-9223372036854775808
$ (( B > A )) && echo true || echo false
false
$ bc <<< "$B > $A"
1
$ (( $(bc <<< "$B > $A") )) && echo true
true