Es ist eine ausgezeichnete Idee, alle Warnungen loszuwerden, sogar kleine - auch wenn nur, wenn Sie mehr signifikante Probleme bekommen, Sie sehen, anstatt die Ausgabe von kleinen Dingen überschwemmt.
In diesem Fall ist die Warnmeldung ziemlich klar; Sie weisen einer Ganzzahl ein Double zu. Die dint
Eigenschaft schneidet zwar ab, konvertiert aber keine Typen; Sie weisen also einen Wert mit doppelter Genauigkeit zu, dessen Wert auf eine ganze Zahl gekürzt wurde. Sie können richtig feststellen, dass die intrinsische ist verwirrend benannt, aber ...
Wenn Sie die Konvertierung sowie die Trunkierung, idint
tatsächlich konvertiert in eine ganze Zahl.
So zum Beispiel das Programm
program foo
integer :: nrev
double precision :: t_ref
t_ref = 1.
nrev = dint(t_ref)
end program foo
die gleiche Warnung erzeugt:
$ 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)
Aber dieses ist in Ordnung:
program foo
integer :: nrev
double precision :: t_ref
t_ref = 1.
nrev = idint(t_ref)
end program foo
wie wir sehen:
$ gfortran -o foo foo.f90 -Wall -std=f95
$
Was möchten Sie genau beheben? Abhängig von der Größe des Ausdrucks mit doppelter Genauigkeit ist er nicht als 32-Bit-Ganzzahl mit Vorzeichen darstellbar. Was erwartest du zu passieren? – talonmies
Wenn ich das volle Programm laufen lasse, sind alle Ausgabewerte NaN, also bin ich besorgt Warnungen wie dieses sind das Problem. Ich habe keine Fehler beim Kompilieren in Gfortran, aber es kompiliert und läuft korrekt, wenn in G77 kompiliert. Ich habe mehrere dieser Warnungen, aber ich konzentriere mich auf diesen, in der Hoffnung, wenn ich Hilfe mit einem bekommen kann, kann ich den Rest herausfinden. –
Wenn Sie NaN-Werte erhalten, bedeutet das, dass Sie irgendwo eine ungültige Fließkommaberechnung haben. Der Code, den Sie angezeigt haben, berechnet einen ganzzahligen Wert. Es ist unmöglich zu sagen, wie die beiden basierend auf dem, was Sie gepostet haben, verwandt sein könnten. – talonmies