Fortran: Was genau ist .d0?

Ich verstehe, dass .d0 bezeichnet double precision aber ich Frage mich, wie es zusammen geht mit Benutzer definierten Genauigkeit. Ich benutze

module precision
implicit none
    integer, parameter :: DP = selected_real_kind(r=250,p=13)
end module precision

und erklären Schwimmer wie

real(KIND=DP) :: var1

Wann immer ich brauche, um einen Wert zuzuweisen, wie ein schweben irgendwo in dem Programm, das ich tun

var1 = 1_DP

Nun das problem, das ich habe, ist, dass es nicht funktioniert, wenn ich Lesen Sie den Wert aus einer namelist. Der compiler besteht auf

&namelistName
    var1 = 1.d0
    !var1 = 1_DP   ! this does not work
&end

Zwei Fragen Folgen:

  1. Was passiert, wenn ich einen Wert zuweisen von 1.d0 eine variable deklariert als real(KIND=DP)?
  2. Gibt es eine Möglichkeit, wie man erzwingen 1_DP im namelists? Wenn es darauf ankommt, natürlich.
  • Sie schreiben nicht, warum es nicht funktioniert. In der Tat ist dieser Satz alnost immer bedeutet, dass Sie sollten beinhalten etwas mehr, Fehlermeldung oder sonstwas. 1_dp ist eine ganze Zahl.
  • Warten Sie eine minute, 1_DP ist eine ganze Zahl?! Ups, wirklich? OK vergiss die Frage 2 jetzt. Was ist mit Frage 1? Wenn ich 1.d0 was mache ich eigentlich? Ich werde überprüfen Sie die compiler-Meldung mittlerweile.
  • Dieser immer noch aktive thread kann auch helfen, Sie verstehen die details groups.google.com/forum/#!topic/comp.lang.fortran/...
  • Vielen Dank ich habe angefangen es zu Lesen und es sieht sehr informativ.
InformationsquelleAutor PetrH | 2014-08-14
Schreibe einen Kommentar