@ikerya

Почему Delphi неправильно оперирует над real?

Почему при возведении числа в степень, оно почему-то (и как-то) умножается на 0.1 и результат получается не таким, как должен быть? Допустим,, возвожу четыре в третью степень, должно получиться 4 * 4 * 4 = 64, но получается 6.400000000. Почему так?

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  a, b, c, d: real;

begin
  writeln('input a, b, c and d:');
  readln(a, b, c, d);

  if (((b > a) AND (c > b) AND (d > c)) OR ((a > b) AND (b > c) AND (c > d))) then
    begin
      a := exp(3 * ln(a));
      b := exp(3 * ln(b));
      c := exp(3 * ln(c));
      d := exp(3 * ln(d));
    end
  else
    begin
      a := 3;
      b := 3;
      c := 3;
      d := 3;
    end;

  writeln('a = ', a, ' b = ', b, ' c = ', c, ' d = ', d);

  readln;
end.
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 2
@immaculate
Программист-путешественник
Ответ написан
Комментировать
@kalapanga
Да ну нафиг, погрешность погрешностью, но не в десять же раз. Вы где-то на выводе у числа степень не заметили. там что-то типа 6.40000+01 должно быть. Если нет, то дайте скриншот с вводом и выводом этой программы. Я хочу видеть это чудо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы