当我创建一个标量整数 s 并将其传递给子例程时,它的值被转换为浮点数并且非常不准确。例如,如果我设置 s = 2 和 CALL print_my_int(s),它将把它写入(,)到控制台,它的值显示为 2.80259693E-45。其他标量整数的行为类似,除了 s = 0 的情况,在这种情况下,输出为 0.0000000。但即使这样仍然是错误的,因为整数显然不应该显示小数和尾数。这不是输出格式问题,因为我可以让其他整数在本地显示时正确显示。
关于这里发生了什么的任何线索?我是否需要在子例程定义中强制参数数据类型?这甚至可以做到吗?
示例代码:
PROGRAM print_int
INTEGER s
s = 2
CALL print_my_int(s)
END PROGRAM print_int
SUBROUTINE print_my_int(x)
WRITE(*,*) x
END SUBROUTINE print_my_int
结果输出:
2.80259693E-45