加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在bash中获得mod的结果的正号

发布时间:2020-12-15 21:49:22 所属栏目:安全 来源:网络整理
导读:当天真地在bash中使用mod命令时,残差会在负分子中得到错误的符号(在我看来): 如果我写: for i in {-5..5}; do echo $(( $i % 3 )) ; done 我得到输出(作为一行) -2 -1 0 -2 -1 0 1 2 0 1 2 我如何实现“正确”的行为 1 2 0 1 2 0 1 2 0 1 2 解决方法 我知
当天真地在bash中使用mod命令时,残差会在负分子中得到错误的符号(在我看来):

如果我写:

for i in {-5..5}; do echo $(( $i % 3 )) ; done

我得到输出(作为一行)

-2 -1 0 -2 -1 0 1 2 0 1 2

我如何实现“正确”的行为

1 2 0 1 2 0 1 2 0 1 2

解决方法

我知道这是一个老问题,但不是循环,直到结果为正或启动perl或python考虑以下内容:

我在{-5..5};回声$(((($i%3)3)%3)); DONE

这将导致OP的期望输出.

这是因为第一个模将结果带到-3到3的范围,加3,导致结果在0到6的范围内,然后我们可以再次执行模数(加3对此没有影响).

一般来说:mod =((a%b)b)%b

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读