问题描述
我在 bash 中执行整数汇总时遇到了一些奇怪的事情。这是为什么?
$ echo $(( 27989065672496370937 + 1 ))
-8904422474922732294
我的意思是,它看起来像一个戒指或类似的东西。但后来我希望像 18.446.744.073.709.551.616 和 -18.446.744.073.709.551.616 之类的东西
解决方法
它是 64 位有符号整数。这是最大的正数:
$ echo $((2 ** 63 - 1))
9223372036854775807
当你添加一个时:
$ echo $((2 ** 63))
-9223372036854775808
对于任意宽度的数字,您需要一个外部工具,例如 bc
$ bc <<< "27989065672496370937 + 1"
27989065672496370938