Как грамотно задать степень десятки в число с плавающей запятой

Мне нужно вычислить степень 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

При таком методе погрешность минимальна.

→ Ссылка