Outra maneira de fazer isso é primeiro especificar explicitamente a precisão desejada na variável usando o intrínseco SELECTED_REAL_KIND e depois usá-lo para definir e inicializar as variáveis. Algo como:
INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
REAL(dp) :: x
x = 1.0_dp
Uma boa vantagem de fazer dessa maneira é que você pode armazenar a definição de dpem um módulo e, em seguida, USEnesse módulo, quando necessário. Agora, se você quiser alterar a precisão do seu programa, precisará alterar apenas a definição dpnesse local em vez de pesquisar e substituir todos os D0s no final de suas inicializações de variáveis. (É também por isso que eu recomendo não usar a 1.0D-1sintaxe para definir Y como sugerido. Funciona, mas torna mais difícil encontrar e alterar todas as instâncias no futuro.)
Esta página no Fortran Wiki fornece boas informações adicionais sobre SELECTED_REAL_KIND.
E com que frequência as pessoas realmente precisam alterar a precisão de seus programas às cegas, sem passar de procedimento a procedimento de qualquer maneira e testando? O principal motivo para usar o _dpesquema é para que a precisão seja claramente definida de maneira portátil.
ja72
12
Você declarou as variáveis como precisão dupla, mas as inicializou com valores de precisão únicos.
Você poderia ter escrito:
X=1.0d0
Y=1.0d-1
A resposta de Barron abaixo é outra maneira de fazer uma precisão dupla literal, com a vantagem de permitir alterar a precisão de suas variáveis posteriormente.
_dp
esquema é para que a precisão seja claramente definida de maneira portátil.Você declarou as variáveis como precisão dupla, mas as inicializou com valores de precisão únicos.
Você poderia ter escrito:
A resposta de Barron abaixo é outra maneira de fazer uma precisão dupla literal, com a vantagem de permitir alterar a precisão de suas variáveis posteriormente.
fonte