Say Ho il seguente programma:migliorare la precisione sulle variabili definite dal numero intero quoziente
program derp
implicit none
integer, parameter :: ikind = selected_real_kind(18)
real (kind = ikind) :: a = 2.0/3.0
print*, a
end program derp
Il programma derp
uscite 0.6666666865348815917
, che evidentemente non è 18 cifre di precisione. Tuttavia, se definisco a=2.0
e b=3.0
utilizzando lo stesso metodo e quindi definisco c=a/b
ottengo un'uscita di 0.666666666666666666685
, che è buona. Come faccio a definire una variabile come un quoziente di numeri interi e devo memorizzare tutte le cifre di precisione che voglio da selected_real_kind
?
Perfetto, grazie. È un po 'scontato che devi farlo manualmente, ma posso conviverci. –
È fondamentale in Fortran che l'RHS venga valutato senza considerare LHS e quindi assegnato. Ci sono più situazioni, dove questo è cruciale. –
valutazione RHS senza riguardo per la precisione del LHS è difficilmente unico per fortran. Se fai un = 2/3 ti aspetteresti un'operazione fluttuante (forse l'aritmetica dell'interger è ciò che intendevi). Ciò che è unico (forse) per fortran è il default alla precisione singola. A male non c'è un modo standard per impostare il valore predefinito. – agentp