fortran中若a和都是integer,表达式执行整数除法。它的含义是:寻找一个整数商q,使a可以分解为,其中r是余数。整数取模mod(a,b)返回这个余数r。例如中,,所以整数商为3,为1。因此整数除法和取模常成对理解:一个计算商,一个计算余数。
本文代码
program integerDivisionDemo
implicit none
integer :: dividend=7 ! 被除数
integer :: divisor ! 除数
integer :: quotient ! 商
integer :: remainder ! 余数
dividend=7
divisor=2
quotient=dividend/divisor
remainder=mod(dividend,divisor)
print "(A)","整数除法:"
print "(A,I4)","被除数=",dividend
print "(A,I4)","除数=",divisor
print "(A,I4)","整数除法7/2的商=",quotient
print "(A,I4)","整数取模mod(7,2)的余数=",remainder
end program integerDivisionDemo
编译运行
(base) hong@hongdeMacBook-Pro tmp.integerDivision % gfortran exampleIntegerDivision.f90
(base) hong@hongdeMacBook-Pro tmp.integerDivision % ./a.out
整数除法:
被除数= 7
除数= 2
整数除法7/2的商= 3
整数取模mod(7,2)的余数= 1
(base) hong@hongdeMacBook-Pro tmp.integerDivision %
核心代码
quotient=dividend/divisor
remainder=mod(dividend,divisor)
结果分析
- quotient=dividend/divisor将7/2的值赋给quotient,quotient根据整数除法商3
- remainder=mod(dividend,divisor)将mod(7,2的值赋给remainder,remainder根据模运算余1
知识点总结
mod()的正式学名:fortran取模函数,采用函数调用形式mod(a,b)。fortran计算中大量使用函数,常见的还有log(),sqrt(),exp(),sin()等。fortran可模除,但没有直接的模除运算符,有些读者接触过如c语言使用%作为模除运算符:
remainder = dividend % divisor
整数除法与实数除法的差异就在“谜面”上,即类型不同。若计算、、可得3.5000。