欢迎来到技术店的结界。 请注册或登录。
下载或查看需要登录,没有帐户吗? 立即注册请参加
x
这个帖子最后由watermelon在2020-8-3 10:53上编辑
昨天,小组里有一个学生讨论了求余的计算问题。 Fortran有求馀数的函数mod和modulo。 其中,两个函数说明如下。 (
模式(a,b ) )。
a,b=INTEGER/REAL
return=INTEGER/REAL
功能:计算a/b盈馀。 如果参数是浮点数,则返回(a-int ) a/b ) b )的值
模型(a,b ) )。
a,b=INTEGER/REAL
RETURN=INTEGER/REAL
功能:同样计算a/b的剩余,使用与MOD不同的公式计算。 如果参数是整数,则返回a-floor(real ) a/real ) b );如果参数是浮点数,则返回a-floor (a/b ) b
以前max在群里发过照片。 如下图所示,说明了Fortran求馀数过程中的计算方法。
QQ影像20200803100540.png(5.32kb,下载次数: 7) )。
2020-8-3 10:43上传
关于mod函数的计算方法非常明确。
接下来,让我们看一下Fortran、Python和C语言的取余数过程:
实验平台: win10 x64、Intel Visual Fortran2013学生版、Visual Studio 2013 Community、python3.8(cpython ) ) )。
Fortran实验代码:
程序主
implicit none
write(*,* ) mod 139,10 )! 139-10*(int(139//10 ) ) 139-10*int ) 13.9 )=139 - 130=9
write(*,* ) mod ) 139,-10! 139--10(*(int(139//-10 )=13910*int(-13.9 )=139(-130 )=9
write(*,* )模式(-139,10 )! -139-10*(int(-139//10 ) )-139-10*int )-13.9 )=-139 130=-9
write(*,* ) mod(-139,-10 )! -139--(-10 ) *(int(-139//-10 ) ) (-10 ) *(int ) 13.9 ) )=-139 )=-9
结束程序
执行结果:
9
9
-9
-9
请按任意键继续.
代码计算过程表明,Fortran实现了在取剩余计算过程中用int )取整数时,正数和负数都向0取整数的计算方法。
接下来,我们来看一下如何计算python3.8以获取剩余:
Python实验代码:
[Python]纯文本显示复印代码print(139(#139-10*(int ) 139//10 ) )=139-10*int ) 13.9 )=139 - 130=9
print(139%-10 ) #139-(-10 ) ) int ) 139/-10 ) 139 ) 10*int(-13.9 )=139(-140 )=-1
print(-139 ) #-139-10 * (int )-139//10 ) )-139-10*int(-13.9 )=-139 ) 140=1
print(-139%-10 ) #-139-(-10 ) *(int )-139-(-10 ) *(int ) 13.9 ) )=-139) )
执行结果:
[Python]纯文本显示复印代码python3.8.1(tags/v 3.8.1:1 b 293 b 6、dec 182019、2:11336046 (mscv.191664 bit ) amd64
Type 'help ',' copyright ',' credits' or 'license (),' for more information。
===========restart : c :/users/administrator/desktop/fuck.py=========restart : c 3:/ustor/ator
9
-1
1
-9
根据代码的计算过程,在Python取剩余的计算过程中使用int )取整数时,计算方法如下。 也就是说,正数朝着0取整数,负数朝着负的无限取整数。
c语言代码与Fortran代码的计算结果相同
实验步骤如下。
[C]纯文本查看二维码#include
intmain(intargc,char *argv[] ) ) ) ) ) ) ) ) ) int main ) ) ) int main ) ) ) int argc,char *argv[] ) ) ) ) ) ) ) int
{
打印(% d (n ),139 % 10 );
打印(% d (n ),139 % -10 );
打印(% d (n ),-139 % 10 );
printf(%d(n ),-139 % -10 );
返回0;
}
执行结果:
[C]纯文本显示复制码9
9
-9
-9
请按任意键继续.
因此,c语言在求馀的方法上与Fortran相同。
请注意,在Fortran中,使用int (,c语言中为(int ) )和Python中为int )对正数和负数进行四舍五入时,都采用了向0的四舍五入。 显然,Python在取馀过程中,其计算方法在负数方面发生了变化,变成了负的无限取整。
希望大家能多多批评和指正!