Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

Округление чисел.   Найти похожие ветки 

 
Klim   (2004-12-27 03:44) [0]

Мастера, скажите:
Как округлить число в едите до двух знаков после запятой.

У меня производиться расчет и в некоторых едитах - получаются некрасивые цифры.

Скажите пожалуйста.


 
TButton ©   (2004-12-27 03:53) [1]

Edit.Text:=Format("%f",[chislo]);
Format + F1
а еще в свое время это делалось так
f:=Trunc(f*100)/100;
Writeln("f=",f);


 
Klim   (2004-12-27 04:01) [2]

Спасібо за ответ...
но мне не так надо.

У меня дано три едита: Edit1  Edit2  Edit3

Я умножаю Edit1 на Edit2  а в  Edit3 - показывается результат.
Вот мне надо чтоб в Edit3 число было с максимумлм до 2 цифр после запятой.


 
Fay ©   (2004-12-27 04:23) [3]

При умножении Edit1 на Edit2 не забудь разделить результат на TEdit, чтобы соблюсти размерность. Дело в том, что Edit3 измеряется в TEdit, а не в TEdit^2.

8)


 
Klim   (2004-12-27 04:29) [4]

Fay
Это само собой.
Я же тут привел условный пример - чтобы до вашего сведения довести - что я хочу...

На самом деле у меня очень сложные расчеты идут.
Но я хочу чтоб вы мне объяснили на примере этих трех эдитов.

Скажите кто нибудь. Как округлить!???


 
Klim   (2004-12-27 04:30) [5]

Fay
Это само собой.
Я же тут привел условный пример - чтобы до вашего сведения довести - что я хочу...

На самом деле у меня очень сложные расчеты идут.
Но я хочу чтоб вы мне объяснили на примере этих трех эдитов.

Скажите кто нибудь. Как округлить!???


 
Fay ©   (2004-12-27 04:32) [6]

А по каким правилам округлять?


 
Klim   (2004-12-27 04:37) [7]

Всмысле по каким правилам????

Я хочу чтоб напрмер так было:

При умножении двух едитов у меня в третьем едите получается число 133,666666666666

Это очень некрасиво .
Я хочу чтоб в третьем едите сразу появлялось 133,66

Вроде все сказал...


 
P.N.P. ©   (2004-12-27 04:51) [8]

> Klim
см. модуль Math - там много полезного,
например функция RoundTo


 
Fay ©   (2004-12-27 04:52) [9]

Типа ентого

uses
 Math;
....
var
 d : Double;
 t : TFPURoundingMode;
begin
 t := GetRoundMode;
 SetRoundMode(rmTruncate);
 d := RoundTo(133.666666666666, -2);
 SetRoundMode(t);
 ShowMessage(FloatToStr(d));


 
korvin ©   (2004-12-27 09:26) [10]

В некотором смысле следующий способ тоже не плохо работает:
Edit3.Text:=FormatFloat("0.00", 3.423+2.521);
Как понятно - "0.00" регулирует количество знаков после запятой :)


 
korvin ©   (2004-12-27 09:26) [11]

В некотором смысле следующий способ тоже не плохо работает:
Edit3.Text:=FormatFloat("0.00", 3.423+2.521);
Как понятно - "0.00" регулирует количество знаков после запятой :)


 
Klim   (2004-12-27 09:26) [12]

Не - нетак.
Я же незнаю какое число получится в третьем едите.

Я просто умножаю 2 едита - а в третьем выводится результат уже округленный до 2 знаков после запятой.


 
MakNik   (2004-12-27 10:05) [13]

В момент присвоения значения в Edit3 сразу и округляй любым из ранее описаных методов... а полное значение (если оно нужно для других расчетов), храни отдельно...


 
Klim   (2004-12-27 10:14) [14]

Я пока неодного метода неувидел , который бы мне подошел.
Вовсех методах уже используются готовые числа.
А в моем - число может быть непредсказуемым.

Напишите кто нить...
Пожалуйста.


 
Плохиш ©   (2004-12-27 10:35) [15]


>Klim   (27.12.04 10:14) [14]
>Я пока неодного метода неувидел , который бы мне подошел.
>Вовсех методах уже используются готовые числа.
>А в моем - число может быть непредсказуемым.

Скажи, дорогой, чем отличаются "готовые числа" от "непредсказуемым"?
Может тебе пора специализацию менять?


 
MakNik   (2004-12-27 10:38) [16]


> Klim   (27.12.04 10:14) [14]
> Я пока неодного метода неувидел , который бы мне подошел.
> Вовсех методах уже используются готовые числа.

... а что мешает написать так?

Edit3.Text:=FormatFloat("0.00", StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text));


 
Плохиш ©   (2004-12-27 10:45) [17]


>MakNik   (27.12.04 10:38) [16]

Ну ты, блин, ваше, ему же умножение надо! :-)


 
Ega23 ©   (2004-12-27 10:47) [18]

Есть 2 замечательные функции - Str и обратная ей Val.


 
Jay1982 ©   (2004-12-27 11:02) [19]


function RoundEx(num: Real; pres: LongWord): Real;
begin
 num := num * pres;
 if Frac(num) >= 0.5 then num := num + 1;
 result := Int(num) / pres
end;


 
Jay1982 ©   (2004-12-27 11:03) [20]

При pres = 100, округление до 2х знаков и т.п.


 
TButton ©   (2004-12-27 23:34) [21]

топик удалить
автора в блок (с)



Страницы: 1 вся ветка

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.035 c
1-1104277153
Евгений2
2004-12-29 02:39
2005.01.16
Можно ли ВООБЩЕ данный участок кода сделать проще: без copy, val?


6-1098668733
Dvm_Home
2004-10-25 05:45
2005.01.16
IdFTP


1-1104151339
MTsv DN
2004-12-27 15:42
2005.01.16
Рекурсивный проход дерева каталогов


11-1085550975
Ricko
2004-05-26 09:56
2005.01.16
Вопрос по koledb


1-1104354989
VfloverW
2004-12-30 00:16
2005.01.16
Возможно ли создать независимое приложение?