Как грамотно задать степень десятки в число с плавающей запятой
Мне нужно вычислить степень 10. Я делаю это так (FORTRAN77):
Z = 10.0**9
Но тут происходит умножение 10 на себя 9 раз. И из-за этого появляется погрешность. Я бы хотел задать степень наиболее точно, например:
Z = 1E9
Так число задаётся ближе нужному, но это прописывается в исходном коде, а мне к примеру нужно степень считать с клавиатуры и возвести.
Хотелось бы задавать число так:
I = 9
Z = 1EI
Но это не работает.
Ну и собственно вопрос: существуют ли какие либо программные способы установки вещественным переменным значения степеней десятки(в том числе и отрицательных)?
Я бы хотел получить ответ на FORTRAN77, но мне также интересно как это делают и в других языках.
Ответы (1 шт):
Собственно мой вопрос решился также как и в более высокоуровневых язык. Я записал число в строку, а после считал из него:
CHARACTER A*7
Z = 10.0**(-11)
WRITE (A,'(E7.1)') Z
READ (A, *) Z
При таком методе погрешность минимальна.