Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
ВнизСтепень Найти похожие ветки
← →
Want (2007-01-03 20:47) [0]Здравствуйте! Помогите разобратся с функцией возведения в степень
Power
. Как ее можно применять на практике? К примеру посчитать 5^7.
В Хелпе написаноfunction Power(const Base, Exponent: Extended): Extended;
А как ее применить - никак не получается. Спасибо.
← →
Юрий Зотов © (2007-01-03 21:01) [1]Base - основание степени, Exponent - показатель степени.
Значит, 5^7 = Power(5, 7)
Для целых чисел лучше использовать IntPower. И не забудьте добавить Math в uses.
← →
zol (2007-01-03 21:19) [2]
> Юрий Зотов © (03.01.07 21:01) [1]
Наверное я совершенно не правильно применяю?procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.caption:=Power(5, 7);
end;
← →
zol (2007-01-03 21:21) [3]
> zol (03.01.07 21:19) [2]
А у меня вообще пишет "Incompatible types "String" and "Extended"".
← →
MsGuns © (2007-01-03 21:29) [4]>zol (03.01.07 21:21) [3]
>А у меня вообще пишет "Incompatible types "String" and "Extended"".
Вам надо предварительно ознакомиться с азами: типы данных в паскале и навыки работы с Obect Inspector
← →
Юрий Зотов © (2007-01-03 21:30) [5]Caption - это строка, текст. А Power возвращает число. Разве можно присваивать одно другому напрямую? Это же разные вещи. Нужно использовать преобразование.
Label1.Caption := FloatToStr(Power(5, 7));
← →
zol (2007-01-03 21:42) [6]
> Юрий Зотов © (03.01.07 21:30) [5]
Теперь разобрался.Спасибо!
> MsGuns © (03.01.07 21:29) [4]
И книга перед носом лежит- а все равно(в голове "ку-ку").Буду исправлятся...
← →
Want (2007-01-03 21:45) [7]
> Юрий Зотов © (03.01.07 21:01) [1]
Спасибо! Получается так само можно и с IntPower (IntPower(5,7)
)
← →
zol (2007-01-03 21:54) [8]Ну тут хоть правильно?
procedure TForm1.Button1Click(Sender: TObject);
var
a,b: integer ;
begin
a:=StrToint(Edit1.Text) ;
b:=StrToint(Edit2.Text) ;
Label1.Caption:=FloatTostr(Power(a ,b));
end;
← →
Anatoly Podgoretsky © (2007-01-03 21:57) [9]> zol (03.01.2007 21:54:08) [8]
Неправильно, обломится на 1,25
← →
zol (2007-01-03 22:18) [10]
> Anatoly Podgoretsky © (03.01.07 21:57) [9]
А так?И вообще как будет правильнее?procedure Stepen(a,b:real;Var T:Real);
begin
T:=Power(a ,b);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
k: real;
mes: string;
begin
Stepen(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text), k);
mes:=FloatToStrF(k, ffGeneral, 4, 2);
Label1.Caption:= mes;
end;
← →
Германн © (2007-01-04 01:01) [11]
> zol (03.01.07 22:18) [10]
> ...
> А так?И вообще как будет правильнее?
Так тоже не очень.
1. Там где пользуютreal
нет функцииPower
. А там, где она есть, использоватьreal
- моветон.
2. Когда используют функции перевода строчного значения в число, настоятельно рекомендуется пользоваться "резиновыми изделиями":) Т.е. использовать защищенные блоки.
3. Нет никакого смысла захламлять стэк двумя лишними переменными k: real; и mes: string;. Как и нет смысла захламлять исходник лишней процедурой.
← →
zol (2007-01-04 13:26) [12]
> Германн © (04.01.07 01:01) [11]
подскажите примером как можно все компактно и правильно записать.- Буду брать в будущем пример.
← →
ors_archangel © (2007-01-04 16:46) [13]Может
try
label1.caption := FloatToStrF(Power(StrToFloat(Edit1.Text),StrToFloat(Edit2.Text)), ffGeneral, 4, 2);
excpet
label1.caption := "Ошибка ввода";
end;
А FloatToStrF - существует (просто в первый раз слышу, извините)?
← →
isasa © (2007-01-04 16:53) [14]ors_archangel © (04.01.07 16:46) [13]
А десятичный разделитель где? (DecimalSeparator)
← →
ors_archangel © (2007-01-04 18:30) [15]
> isasa © (04.01.07 16:53) [14]
Это вопрос по коду или намёк по вопросу? Или шутка такая?
← →
zol (2007-01-04 19:56) [16]
> ors_archangel © (04.01.07 16:46) [13]
Спасибо работает, только нужно было исправитьexcpet
наexcept
. Если это оптимально и правильно- благодарю.
еще у меня вопрос : Как при возведении больших чисел избежать отображение в Лейбле занака "E"- и вместо него чтоб писалось полное число?
← →
Anatoly Podgoretsky © (2007-01-04 21:38) [17]> zol (04.01.2007 19:56:16) [16]
Полное это сколько, неужели все 4096 знаков?
← →
zol (2007-01-04 22:34) [18]
> Полное это сколько, неужели все 4096 знаков?
конечно нет, пусть 6 знаков после запятой.Или я чтото не правильно понял?
← →
-DeBUGGeR- © (2007-01-04 23:00) [19]
> еще у меня вопрос : Как при возведении больших чисел избежать
> отображение в Лейбле занака "E"- и вместо него чтоб писалось
> полное число?
Времени нету смотреть и проверять, но копай в сторону Format (в справке вроде как Format String)... там вроде можно сделать чтобы выводить число без "E"...
Типа Label.Caption := Format("%f", [Число_результат]);
Там может и не %f .... короче help смотрите...
← →
Галинка © (2007-01-05 00:13) [20]isasa © (04.01.07 16:53) [14]
прав. Надо всегда проверять DecimalSeparator. Просто привыкните это делать всегда. Чтобы пользователь не парился с точками и запятыми.
← →
Германн © (2007-01-05 01:08) [21]
> zol (04.01.07 22:34) [18]
>
>
> > Полное это сколько, неужели все 4096 знаков?
>
> конечно нет, пусть 6 знаков после запятой.Или я чтото не
> правильно понял?
Появление знака Е зависит не от количества знаков после запятой, а от количества знаков перед оной.
А так используй то, что и предложено в [13].
← →
Германн © (2007-01-05 01:12) [22]
> Германн © (05.01.07 01:08) [21]
>
>
> > zol (04.01.07 22:34) [18]
> >
> >
> > > Полное это сколько, неужели все 4096 знаков?
> >
> > конечно нет, пусть 6 знаков после запятой.Или я чтото
> не
> > правильно понял?
>
> Появление знака Е зависит не от количества знаков после
> запятой, а от количества знаков перед оной.
> А так используй то, что и предложено в [13].
Извините. Вру конечно. Вышеописанное правильно, только если число больше единицы.
← →
Anatoly Podgoretsky © (2007-01-05 13:09) [23]> zol (04.01.2007 22:34:18) [18]
Конечно да, как понял ты не знаю, но если в результате получилось число 10^4096, то кау можно показать только 6 знаков без использования математической нотации.
Так что или математическая нотация одно из двух.
← →
ors_archangel © (2007-01-05 13:14) [24]
> isasa © (04.01.07 16:53) [14]
> ors_archangel © (04.01.07 16:46) [13]А десятичный разделитель
> где? (DecimalSeparator)
Проверку "точка/запятая" лучше сунуть в сами StrToFloat, давно так сделал и рад
← →
zol (2007-01-05 18:43) [25]
> Anatoly Podgoretsky © (05.01.07 13:09) [23]
Ну вот к примеру 0,25^7. получается при вычислении 6,104E-05.
А чтоб получилось 0,000061035? Использовать Format Strings?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.044 c