#arrays #io #fortran
#массивы #io #fortran
Вопрос:
Я выписываю элементы массива следующим образом:
write(6,'(i4,200(1x,e15.7))')Jtot0, (a*PJjv(i,Jtot0,j,iv),i=1,nenerdif,100)
где a
— константа. Однако, когда эта константа равна 1/2 или 1/3, на выходе получаются нули, и если она равна 1, все идет хорошо. Элементы массива real*8
.
Как я могу преодолеть это, учитывая, что я обязан умножать на коэффициент 1/3?
Комментарии:
1. Вы имеете в виду
1/2
и1/3
(которые равны нулю) или половину и треть? Пожалуйста, покажите назначение дляa
.
Ответ №1:
В Fortran 1/2
это операция целочисленного деления, которая в данном случае округляется до 0
. То же самое для 1/3
. Если вы хотите получить реальный результат, выполните реальную операцию деления, например 1.0/2.0
. Обратите внимание, что присвоение результата 1/2
действительной переменной установит действительную переменную на 0.0
, то есть целочисленное деление приведет к 0
, и присваивание, которое происходит затем, приведет это значение к его ближайшему реальному представлению.
Этот процесс целочисленного деления, дающий целочисленные результаты, очень распространен в языках программирования.