|
Вопрос # 6 061/ вопрос решён / |
|
Доброго времени суток. я хочу узнать из за чего происходит такой сбой, использую функцию возведения в степень:
a:=StrTofloat(edt1.Text);
b:=StrTofloat(edt2.Text);
c:=Power(a,b);
edt3.Text:=floatToStr(c);
если например возвожу 10 в минус 4 степень получается 0,0001, но если возведу в минус 5 то уже происходит какой то сбой и получается 1E-5. Как устранить эту проблему, если на -5 уже глючит, а дальше уж тем более
 |
Вопрос задал: skew (статус: Посетитель)
Вопрос отправлен: 9 апреля 2012, 15:37
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: DNK
Здравствуйте, skew!
Нужно использовать функции FloatToStrF или format.
 |
Ответ отправил: DNK (статус: Студент)
Время отправки: 10 апреля 2012, 22:56
|
Мини-форум вопроса
Всего сообщений: 19; последнее сообщение — 11 апреля 2012, 13:09; участников в обсуждении: 5.
|
DNK (статус: Студент), 9 апреля 2012, 15:41 [#1]:
это не сбой, а фича!
"Digital Networked Knight"
|
|
skew (статус: Посетитель), 9 апреля 2012, 15:45 [#2]:
как исправить?
ведь переменная Extended тянет 3.6*10-4951 .. 1.1*104932-1
|
|
DNK (статус: Студент), 9 апреля 2012, 15:54 [#3]:
Нужно использовать функции FloatToStrF или format.
"Digital Networked Knight"
|
|
min@y™ (статус: Доктор наук), 9 апреля 2012, 15:58 [#4]:
Цитата (skew):
но если возведу в минус 5 то уже происходит какой то сбой и получается 1E-5. Как устранить эту проблему, если на -5 уже глючит, а дальше уж тем более
Это не сбой. 1е-5 - это и есть 10-5.
Используй функцию FloatToStrF().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 9 апреля 2012, 16:05 [#5]:
я не понял как задать FloatToStrF() у меня при запуске ошибку выдает
|
|
min@y™ (статус: Доктор наук), 9 апреля 2012, 16:26 [#6]:
Цитата (skew):
у меня при запуске ошибку выдает
Нам догадаться, что за ошибка? У нас тут телепатов нету, их всех забрали на работу в Microsoft.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 9 апреля 2012, 16:47 [#7]:
))) не не ошибку, а не запускается, а в логе ошибок пишет
[Ошибка] Unit1.pas(57): Undeclared identifier: 'StrToFloatF'
[Фатальная ошибка] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
|
|
min@y™ (статус: Доктор наук), 9 апреля 2012, 17:01 [#8]:
Я ж тебе писал:
Цитата (min@y™):
Используй функцию FloatToStrF().
А ты какую использовать пытаешься? Посмотри внимательно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 9 апреля 2012, 17:19 [#9]:
я просто не пойму как задать переменную такого типа, если FloatToStr это Extended . то какая StrToFloatF?
|
|
DNK (статус: Студент), 9 апреля 2012, 19:35 [#10]:
Тебе уже на двух языках объяснили, что нет такой функции StrToFloatF в природе. Не придумали ещё.
"Digital Networked Knight"
|
|
skew (статус: Посетитель), 9 апреля 2012, 19:41 [#11]:
вот вообщем код программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Math, StdCtrls, xpman;
type
TForm1 = class(TForm)
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
edt4: TEdit;
edt5: TEdit;
edt6: TEdit;
Button2: TButton;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lbl4: TLabel;
lbl5: TLabel;
lbl6: TLabel;
lbl7: TLabel;
Button1: TButton;
edt7: TEdit;
edt8: TEdit;
lbl8: TLabel;
lbl9: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,b,c,a1,b1,c1,s,s1: extended;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
if (edt1.Text='') or (edt2.Text='') then
Button1.Click
else
begin
if (edt4.Text='') or (edt5.Text='') then
begin
if edt7.Text = '' then
form1.Show
else
s:=StrTofloat(edt7.Text);
a:=StrTofloatf(edt1.Text);
b:=StrTofloat(edt2.Text);
c:=Power(a,b);
s1:=c*s;
edt3.Text:=FloatToStr(c);
edt8.Text:=floatToStr(s1);
end
else
begin
a:=StrTofloat(edt1.Text);
b:=StrTofloat(edt2.Text);
c:=Power(a,b);
edt3.Text:=floatToStr(c);
a1:=StrTofloat(edt4.Text);
b1:=StrTofloat(edt5.Text);
c1:=Power(a1,b1);
edt6.Text:=floatToStr(c1);
if c>c1 then
lbl1.Caption:='>'
else
lbl1.Caption:='<';
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if (edt1.Text='') or (edt2.Text='') then
begin
a1:=StrTofloat(edt4.Text);
b1:=StrTofloat(edt5.Text);
c1:=Power(a1,b1);
edt6.Text:=floatToStr(c1);
end
else
begin
a1:=StrTofloat(edt4.Text);
b1:=StrTofloat(edt5.Text);
c1:=Power(a1,b1);
edt6.Text:=floatToStr(c1);
a:=StrTofloat(edt1.Text);
b:=StrTofloat(edt2.Text);
c:=Power(a,b1);
edt3.Text:=floatToStr(c);
if c>c1 then
lbl1.Caption:='>'
else
lbl1.Caption:='<';
end;
end;
end.
|
|
skew (статус: Посетитель), 9 апреля 2012, 19:44 [#12]:
Нужно использовать функции FloatToStrF
Это разве не твои слова?
|
|
min@y™ (статус: Доктор наук), 9 апреля 2012, 20:14 [#13]:
Цитата (skew):
Это разве не твои слова?
Да, это его слова. И они правильные.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 9 апреля 2012, 21:20 [#14]:
но в предыдущем его сообщение он их опровергает. можешь в крации на примере показать как использовать ее
|
|
min@y™ (статус: Доктор наук), 9 апреля 2012, 21:30 [#15]:
Цитата (skew):
но в предыдущем его сообщение он их опровергает
Да где? Процитируй!
Цитата (skew):
можешь в крации на примере показать как использовать ее
А чо такое "крации"?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 9 апреля 2012, 21:33 [#16]:
Не пойму, ну неужели влом тупо открыть хэлп и прочитать, как там чо работает. Там жеж всё чёрным по белому разжёвано!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Мережников Андрей (статус: Абитуриент), 9 апреля 2012, 21:35 [#17]:
Цитата (skew):
но в предыдущем его сообщение он их опровергает
не видишь разницы между FloatToStrF и придуманной тобой StrToFloatF ?
Цитата (skew):
можешь в крации на примере показать
для крации есть help
|
|
DNK (статус: Студент), 10 апреля 2012, 22:55 [#18]:
Ржу - не магу, над ним!
"Digital Networked Knight"
|
|
bugmenot (статус: 3-ий класс), 11 апреля 2012, 13:09 [#19]:
крация крации розня!
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
18 апреля 2012, 17:04: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|