program test
implicit none
integer :: a = 509232994 ! 毫秒数
real :: slope = 0.1
real :: b
b = a *slope
print *, a, b
write (*, fmt = '(F12.1)') b
end program test
执行程序后,输出b的结果均不是50923299.4,而是50923300.0。请问这个是什么原因,该如何解决?其中a是从HDF文件读取出来的,其在HDF5文件中的类型是H5T_NATIVE_INTEGER,利用call H5Dread_f(dhnd, H5T_NATIVE_INTEGER, a, szst, iret)读取。如何在不修改a为整型情况下,得到正确的50923299.4,这个结果在后面的程序中会被使用,精度损失的话会有影响。
program test
implicit none
integer :: a = 509232994 ! 毫秒数
real(kind=8) :: slope = 0.1d0
real(kind=8) :: b
b = a *slope
print *, a, b
write (*, fmt = '(F12.1)') b
end program test