Cara lain untuk melakukan ini adalah pertama-tama secara eksplisit menentukan presisi yang Anda inginkan dalam variabel menggunakan intrinsik SELECTED_REAL_KIND dan kemudian gunakan ini untuk menentukan dan menginisialisasi variabel. Sesuatu seperti:
INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
REAL(dp) :: x
x = 1.0_dp
Keuntungan yang bagus untuk melakukannya dengan cara ini adalah Anda dapat menyimpan definisi dpdalam sebuah modul, kemudian USEmodul itu jika diperlukan. Sekarang jika Anda ingin mengubah ketepatan program Anda, Anda hanya perlu mengubah definisi dpdi satu tempat itu daripada mencari dan mengganti semua huruf D0s di akhir inisialisasi variabel Anda. (Ini juga mengapa saya merekomendasikan untuk tidak menggunakan 1.0D-1sintaks untuk mendefinisikan Y seperti yang disarankan. Ini berfungsi, tetapi membuatnya lebih sulit untuk menemukan dan mengubah semua instance di masa depan.)
Halaman ini di Fortran Wiki memberikan beberapa informasi tambahan yang bagus tentang SELECTED_REAL_KIND.
Dan seberapa sering orang benar-benar harus mengubah ketepatan pada program mereka secara membabi buta tanpa melakukan prosedur demi prosedur dan pengujian? Alasan utama untuk menggunakan _dpskema ini adalah agar presisi didefinisikan secara jelas dengan cara yang portabel.
ja72
12
Anda mendeklarasikan variabel sebagai presisi ganda, tetapi Anda menginisialisasi mereka dengan nilai presisi tunggal.
Anda bisa menulis:
X=1.0d0
Y=1.0d-1
Jawaban Barron di bawah ini adalah cara lain untuk membuat presisi ganda literal, dengan keunggulan yang memungkinkan Anda untuk mengubah presisi variabel Anda di lain waktu.
_dp
skema ini adalah agar presisi didefinisikan secara jelas dengan cara yang portabel.Anda mendeklarasikan variabel sebagai presisi ganda, tetapi Anda menginisialisasi mereka dengan nilai presisi tunggal.
Anda bisa menulis:
Jawaban Barron di bawah ini adalah cara lain untuk membuat presisi ganda literal, dengan keunggulan yang memungkinkan Anda untuk mengubah presisi variabel Anda di lain waktu.
sumber