Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при Вычесление минусовой степени 
V
    Опции темы
Ak47black
  Дата 7.3.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Привет всем.
Сталкнулся с проблеммой при вычислении 10 в -10 степени (получаю результат -9) использую следушую функция дял вычесления
Код

Function stepen(A,B:Real):Real;
{ Ôóíêöèÿ âîçâåäåíèÿ â ñòåïåíü (A^B) }
Var T:Real;
Begin
     T := Abs(A);
     If A < 0 Then stepen := (-1)*Exp(B*Ln(T))
              Else stepen := Exp(B*Ln(T));
End;

При вычеслении до -4 степени всё вычесляется нормально smile
Подскажите что мне делать. smile
PM MAIL   Вверх
SoWa
Дата 7.3.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



А Функция Power никак не работает?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Ak47black
Дата 7.3.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



При функции Power
--------------------------
1E-9
--------------------------
smile
PM MAIL   Вверх
Albinos_x
Дата 7.3.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



ну так и должно быть....
10^-10 = 1е-9 = 10е-10


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Ak47black
Дата 7.3.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Цитата(Albinos_x @ 7.3.2006, 20:35)
ну так и должно быть....
10^-10 = 1е-9 = 10е-10

Тогда как мне получить число без всяких 'E' smile ?


Это сообщение отредактировал(а) Ak47black - 7.3.2006, 20:41
PM MAIL   Вверх
SoWa
Дата 7.3.2006, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



ты выводишь FloatTostr ?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Демо
Дата 7.3.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Код

function stepen(A,B: Double): Double;
var
    T: Double;
begin
  T := Abs(A);
  if A < 0
    then Result := (-1) * Exp(B*Ln(T))
    else Result := Exp(B*Ln(T));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
    ShowMessage(FormatFloat('#,##0.000000000000000',stepen(10,-10)));
end;




--------------------
    
PM MAIL ICQ Skype   Вверх
SoWa
Дата 8.3.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



А! Надо использовать FloatToStrF


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Romikgy
Дата 9.3.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Код

Function stepen(A,B:Real):Real;
Var T:Real;
Begin
     T := Abs(A);
     if B=0.0 then begin
Result:=1.0;
Exit;
end;
if A=0.0 then 
begin
Result:=0.0;
Exit;
end;
     If A < 0 Then stepen := 1.0/Exp(B*Ln(T))
              Else stepen := Exp(B*Ln(T));
End;

Имхо так правильнее


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
former
Дата 9.3.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Или использовать функцию Format. Она сразу преобразует в String и определяет количество цифр после запятой.

Код

Edit1.Text:=Format('%*.*e',[2,5,T]);



--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.