Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
8-1097133328
Ozone
2004-10-07 11:15
2005.01.16
Audio поток из AVI (VfW.pas)


14-1104126366
Layner
2004-12-27 08:46
2005.01.16
Эмулятор звуковой карты, есть ли такое?


14-1103897964
syte_ser78
2004-12-24 17:19
2005.01.16
кажется уже спрашивал.


4-1101036438
Solo
2004-11-21 14:27
2005.01.16
HW_Shell хук и перерисовка taskbar-а


14-1104227771
Empleado
2004-12-28 12:56
2005.01.16
Скопировать CD





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский