Otra forma de hacer esto es primero especificar explícitamente la precisión que desea en la variable usando el intrínseco SELECTED_REAL_KIND y luego usar esto para definir e inicializar las variables. Algo como:
INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
REAL(dp) :: x
x = 1.0_dp
Una buena ventaja de hacerlo de esta manera es que puede almacenar la definición de dpen un módulo, luego USEese módulo donde sea necesario. Ahora, si alguna vez desea cambiar la precisión de su programa, solo tiene que cambiar la definición de dpese lugar en lugar de buscar y reemplazar todos los D0s al final de sus inicializaciones variables. (Esta es también la razón por la que recomendaría no usar la 1.0D-1sintaxis para definir Y como se sugiere. Funciona, pero hace que sea más difícil encontrar y cambiar todas las instancias en el futuro).
Esta página en Fortran Wiki brinda buena información adicional sobre SELECTED_REAL_KIND.
¿Y con qué frecuencia las personas realmente tienen que cambiar la precisión de sus programas a ciegas sin tener que ir procedimiento por procedimiento de todos modos y realizar pruebas? La razón principal para usar el _dpesquema es para que la precisión esté claramente definida de una manera portátil.
ja72
12
Declaró las variables como precisión doble, pero las inicializó con valores de precisión únicos.
Podrías haber escrito:
X=1.0d0
Y=1.0d-1
La respuesta de Barron a continuación es otra forma de hacer una doble precisión literal, con la ventaja de que le permite cambiar la precisión de sus variables en un momento posterior.
_dp
esquema es para que la precisión esté claramente definida de una manera portátil.Declaró las variables como precisión doble, pero las inicializó con valores de precisión únicos.
Podrías haber escrito:
La respuesta de Barron a continuación es otra forma de hacer una doble precisión literal, con la ventaja de que le permite cambiar la precisión de sus variables en un momento posterior.
fuente