小さなものも含め、すべての警告を取り除くことは素晴らしい考えです。たとえ、より重大な問題が発生したときに、出力がささいなことで圧倒されるのではなく、それらを見ることができるとしてもです。
この場合、警告メッセージはかなり明確です。double を整数に割り当てています。組み込みは切り捨てますdint
が、型は変換しません。そのため、値が整数に切り捨てられた倍精度値を割り当てています。組み込みの名前が紛らわしいことに気付くかもしれませんが...
切り捨てだけでなく変換も行いたい場合は、idint
実際には整数に変換します。
たとえば、このプログラム
program foo
integer :: nrev
double precision :: t_ref
t_ref = 1.
nrev = dint(t_ref)
end program foo
同じ警告を作成します。
$ gfortran -o foo foo.f90 -Wall -std=f95
foo.f90:8.11:
nrev = dint(t_ref)
1
Warning: Possible change of value in conversion from REAL(8) to INTEGER(4) at (1)
しかし、これは問題ありません:
program foo
integer :: nrev
double precision :: t_ref
t_ref = 1.
nrev = idint(t_ref)
end program foo
ご覧のとおり:
$ gfortran -o foo foo.f90 -Wall -std=f95
$