gpt4 book ai didi

bash - 在 bash 中减去大数

转载 作者:行者123 更新时间:2023-11-29 09:19:55 24 4
gpt4 key购买 nike

我想用两个大数字做一个子

我的目的是

1805334111369276485744644020321551471447190030955050085289-3369574570478873127315415525946742317481702644901195284480

我试试

echo $((1805334111369276485744644020321551471447190030955050085289-3369574570478873127315415525946742317481702644901195284480))

我的结果是:3160661815551241129

但这是不正确的。

我可以在 console chrome 中做类似的操作我有

-1.5642404591095965e+

如何在 bash 中执行此操作?我什至尝试使用 expr,但没有 lucky

可以检查一个数是否大于另一个数

在外壳中

echo $((1805334111369276485744644020321551471447190030955050085289>3369574570478873127315415525946742317481702644901195284480))

结果:1​​

在 chrome 中同样的操作

1805334111369276485744644020321551471447190030955050085289>3369574570478873127315415525946742317481702644901195284480

结果:错误

chrome 是对的

最佳答案

bash 手册的ARITHMETIC EVALUATION 部分解释了为什么使用 $((...)) 得到这个结果:

Evaluation is done in fixed-width integers with no check for overflow

您可以使用 expr(取决于编译时选项,检查 @Benjamin W 的注释),但您需要在运算符及其操作数之间留有空格:

$ expr 1805334111369276485744644020321551471447190030955050085289 - 3369574570478873127315415525946742317481702644901195284480
-1564240459109596641570771505625190846034512613946145199191

作为@PesaThe提到您还可以使用 bc,它的主要功能之一是能够处理任意精度的算术:

bc <<< "1805334111369276485744644020321551471447190030955050085289 - 3369574570478873127315415525946742317481702644901195284480"
-1564240459109596641570771505625190846034512613946145199191

关于bash - 在 bash 中减去大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54239604/

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