Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash取模奇怪的结果(不是负的)

Bash取模奇怪的结果(不是负的)
EN

Stack Overflow用户
提问于 2015-11-28 18:20:40
回答 2查看 384关注 0票数 0

我想在Bash脚本中使用模,但结果总是太低。我需要这样的东西: days = jdn mod p这是我所拥有的:

代码语言:javascript
运行
AI代码解释
复制
#!/bin/bash

if [ $# -ne 2 ]
then 
        echo "Fout, syntaxis: $0 maand(in cijfers) jaar"
        exit 1
fi

a=$(echo "14 - $1"|bc)
y=$(echo "$2 + 4800 - $a"|bc)
m=$(echo "12 * $a - 3 + $1"|bc)
jdn=$(echo "scale=2;1 + (153 * $m +2)/5 + 365 * $y +${y}/4 - ${y}/100     - 32045"|bc)
jdn=$(echo "$jdn + 1"|bc|sed "s/...$//")
d=1
p=$(echo "29.530588853")

while [ "$d" != "32" ]
do
        echo -n "$d"
        days=$(echo "scale=2;${jdn} % ${p}"|bc) 
    fase=$(echo "scale=2;$p / $days"|bc)
    fase1=$(echo "${fase}<7.382647213"|bc)
    if [ $fase1 -eq 1 ]
    then
            echo -n "@"
    elif [ $(echo "${fase}<14.76529443"|bc) -eq 1 ]
    then
            echo -n ")"
    elif [ $(echo "$fase<22.14794164"|bc) -eq 1 ]
    then
            echo -n "0"
    else
            echo -n "("
    fi
    d=$(echo "$d + 1"|bc)
    jdn=$(echo "$jdn +1"|bc)
done 

jdn的结果是2455369,天数应该是9.55d,但结果是0.054...

EN

回答 2

Stack Overflow用户

发布于 2015-11-28 18:50:50

Bash shell中的运算只对整数进行,因此最好改变方法(或将数量乘以10的大幂,使其成为整数)。

当您在Bash中对整数进行数学运算时,请将算术包含在双括号中,或者使用'let‘关键字。

代码语言:javascript
运行
AI代码解释
复制
((${jdn} % ${p}))

正如这些来源中所描述的。

票数 0
EN

Stack Overflow用户

发布于 2015-12-05 14:20:25

我找到了一个解决方案:没有可伸缩性,它工作得很好。所以这是我的代码:

代码语言:javascript
运行
AI代码解释
复制
days=$(echo "${jdn} % ${p}"|bc)

我只需要确保模数不会返回0,然后我就可以在除法中设置比例。最后看起来更像是一道数学题...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33974793

复制
相关文章
% 不是取模运算符?
为什么我问这个问题,因为我今天才发现不同语言中 % 的含义是不同的,因为我是主学 java 的,一直以为 % 就是取模,但是我错了。
wsuo
2020/07/31
1.8K0
% 不是取模运算符?
matlab如何取模_matlab取模运算
mod函数采用floor,rem函数采用fix函数。那么什么是floor和fix?
全栈程序员站长
2022/09/20
1.1K0
取模运算
取余运算的c向0 方向舍入(fix()函数);而取模运算向负无穷方向舍入(floor()函数)。
饶文津
2020/06/02
1.2K0
Java取余和取模
抛开高级语言的实现,取余运算和取模运算本身并不完全一致,区别在于对负整数进行取商时操作不同。虽然这样说,但是取余运算和取模运算的公式都一样。对于x和y两个整数(int),通过以下两个操作获取余数或模数:
全栈程序员站长
2022/08/11
2.3K0
编程语言中,取余和取模的区别
7/(-3)=-2.3,在这个运算中,x为7,y为-3,分别调用fix()和floor()两个函数,得到结果是:
全栈程序员站长
2022/08/09
1.1K0
取模和与运算的优化
注释中提到(x & lengthMod) is equal to (x % arr.Length)。 表示从没见到过这种优化啊,各种查资料才发现,其实这个有一个条件,即通常只有模去 2^n 才好直接用位运算做, x mod 2^n = x & (2^n-1)。
sean.liu
2022/08/03
9740
取模和与运算的优化
Java取模(mod)与取余(rem)的区别
Y(被除数) % X(除数) 当除数与被除数的符号相同时,取余和取模的结果是完全相同的; 当除数与被除数的符号不相同时,结果不同。 当除数与被除数的符号不相同时的区别: 取余结果的符号与被除数相同; 取模结果的符号与除数相同。 1.取余,取余结果的符号与被除数相同 rem(3,2)=1    rem(-3,-2)=-1    rem(3,-2)=1    rem(-3,2)=-1    2.取模,取模结果的符号与除数相同 mod(3,2)=1    mod(-3,-2)=-1    mod(3,-2)=-1
joshua317
2021/10/22
2.2K0
Java 取余 (remain),取模 (mod) 的 区别和运算
参考文献:https://blog.csdn.net/coder_panyy/article/details/73743722 https://blog.csdn.net/songsong2017/article/details/84033883
全栈程序员站长
2022/09/05
2K0
Java 取余 (remain),取模 (mod) 的 区别和运算
大组合数取模的Lucas定理
其中p相对较小的素数。但是当n和m过大时,计算的耗费就急剧增加,在实践中不适用。当这时候就需要Lucas定理进行快速运算:
mythsman
2022/11/14
8250
Js 取模运算、取商、取整方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152062.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/24
9K0
Js 取模运算、取商、取整方法
Utility之负数取模
最近在跟孩子学习表内除法,想到一个问题:C语言里怎样处理负数取模? 表内除法:12÷4=3 整数除法:13÷4=3…1 整数整除:13/4是等于3吗? 负数取模:-13%4等于多少?1
Taishan3721
2020/01/02
1.6K0
C语言符号-取余\取模运算
当然对于向0取整我们也可以使用trunc库函数 (需包含math.h头文件)
用户9645905
2022/11/30
3.4K0
C语言符号-取余\取模运算
mysql 取模分区_MySQL分区
分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。而分区是将数据分段划分在多个位置存放,分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。
全栈程序员站长
2022/08/11
5.4K0
mysql 取模分区_MySQL分区
Python 取模运算符
本文最先发布在:https://www.itcoder.tech/posts/python-modulo-operator/
雪梦科技
2020/06/22
11.9K0
【HDU 5832】A water problem(大数取模)
效率要高的话,每15位取一次模,因为取模后可能有3位,因此用ll就最多15位取一次。
饶文津
2020/06/02
5430
JS除法不是默认向下取整的
然后我检查了好久,原来是我用除法获取中间索引值的时候,没有对中间索引值进行取整处理,
全栈程序员站长
2022/08/31
3.4K0
奇怪的知识
而数据中台则是将数据服务化之后提供给业务系统, 目标是将数据能力渗透到各个业务环节
solve
2022/03/30
9380
奇怪的电梯
§、奇怪的电梯(lift.cpp) §【问题描述】 §大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢? §【输入格式】lift.in §输入文件共有二行,第一行为三个用
attack
2018/04/12
1.6K0
点击加载更多

相似问题

奇怪的模运算结果

20

模运算的结果是负的。

11

从“%1”开始的取模结果

20

模计算中的奇怪结果

12

大的负模给出错误的结果

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档