
fortran 的一个小问题
本人新学fortran,看数据类型时遇到一个问题,下面程序中a为浮点型,b为整形,为什么输出结果是a=0.0000E+00b=0a因该是0.25啊。不知道那里错了,还请大...
本人新学fortran,看数据类型时遇到一个问题,下面程序中a为浮点型,b为整形,为什么输出结果是 a=0.0000E+00 b=0
a因该是0.25啊。不知道那里错了,还请大家帮忙
program main
implicit none real a integer b a=1/4 b=1/4 write(*,*)a write(*,*)b stopend program main 展开
a因该是0.25啊。不知道那里错了,还请大家帮忙
program main
implicit none real a integer b a=1/4 b=1/4 write(*,*)a write(*,*)b stopend program main 展开
展开全部
你这是所有编程语言中常见的整数除法的错误,计算机程序中(c,java等语言都如此)对于除法的计算是当分子和分母都为整数时,结果也一定是整数,你的程序中a=1/4这一句计算机先计算右边,因为1和4都是整数,故计算出来的结果也一定是整数,小数部分直接丢掉,原本为0.25的丢掉小数后便为0,也就是右边计算完后结果为0。计算机先完成右边计算再赋值(运算符的优先级决定),a=1/4相当于a=0,结果便可想而知了吧。
为了避免这类错误,劝你最好只要有除法,便在分子或分母的常数中加上小数点,如 a=1/4改为a=1.0/4,这样就没问题了。
本人最近写了个程序,里有个错误就是这样的,找了好久才找出来,写程序养成好的习惯最重要。。。
为了避免这类错误,劝你最好只要有除法,便在分子或分母的常数中加上小数点,如 a=1/4改为a=1.0/4,这样就没问题了。
本人最近写了个程序,里有个错误就是这样的,找了好久才找出来,写程序养成好的习惯最重要。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询