gfortran和ifort中是否有编译选项会警告我是否将单精度数字分配给双精度变量?即当我这样做时:
real(dp) :: number
number = 1.23 ! <---- I want to get compilation warning here
program precision
! Double precision type
integer, parameter :: dp = selected_real_kind(p = 15, r = 307)
real(dp) :: number
number = 1.3
print *, 'Garbage: ', number
! Prints 1.2999999523162842
! with nonsence digits after 7th decimal
number = 1.3_dp
print *, 'Legit: ', number
! Prints 1.3000000000000000
! with all digits we want
end program
我想在上述代码中收到number = 1.3
分配的警告。这是一个容易犯的错误,弄乱了我的计算精度。
我知道gfortran的编译选项-fdefault-double-8 -fdefault-real-8
和ifort的-r8
神奇地使所有单精度常量变为双精度。这不是我想要的。