Ich habe Zweifel über Fortran. Im folgenden Code:Fortran ganzzahlig bis doppelt
program p
integer num
real*8 d
num=111
d=dble(num/4)
print*, d
end program p
Ich bekomme 27,000000000000000. Ist es, weil num eine ganze Zahl ist und so num/4 vom selben Typ sein muss? Es ist ein Teil eines anderen Codes, den ich in Matlab übersetzen muss: in diesem speziellen Fall kann ich es als num/4 truncated übersetzen?
floor(num/4)
Vielen Dank im Voraus
Hinweis, verwenden Sie nicht real * 8, es könnte nicht wirklich tun, was Sie denken, dass es tut. Verwende die 'real (kind = rk)' -Notation und wähle die Art rk mit 'selected_real_kind' aus. Ihr Problem ist, dass Sie den Bereich um die Abteilung herum tun. Das heißt, zuerst wird die Division durchgeführt (was eine Ganzzahldivision ist, da beide Argumente Ganzzahlen sind) und dann das Ergebnis in ein Realteil transformiert. Stattdessen könnten Sie zum Beispiel tun: 'd = real (num, kind = rk)/4'. Besser noch, vielleicht so etwas: 'd = 0.25_rk * num'. – haraldkl