Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как ограничить количество знаков после запятой? [D6, Win95/98]


Vetalar ©   (2002-11-10 21:47:00) 

Народ, помогите чайнику! Результат вычисления выводится в лабель,
но он иногда получается слишком большой, что вылазит за форму. Как обрезать количество знаков после запятой?


SottNick   (2002-11-11 12:35:00) [1]

2 PKT
я понимаю, что больше (битов не хватает для записи числа)
но синий то экран вылазить не должен


dimonf   (2002-11-11 09:20:00) [2]

Воспользуйся procedure Str(X [: Width [: Decimals ]]; var S);


Praco   (2002-11-11 09:17:00) [3]

И еще:
FormatFloat
FormatCurr


PKT   (2002-11-11 09:04:00) [4]

to:SottNick © (11.11.02 08:29)

function Round(X: Extended): Int64;

Int64 –2^63..2^63–1 signed 64-bit

Round(9.5E19) > 2^63–1


SottNick   (2002-11-11 08:29:00) [5]

забыл уточнить:
не всегда глючит
иногда просто Invalid Floating Point Operation

вот демка для глюка:
var
r:real;
begin
r:=9.5E19;
r:=Round(r);
end;


SottNick   (2002-11-11 08:23:00) [6]

2 Fydgety
это RX? или что? выдерни исходник процедуры

НАДО ЕЩЕ ВСЕХ ПРЕДУПРЕДИТЬ
Round круто глючит с большими числами
на моем P-III рисует "синий экран"
например Round(9,5E19);
так что без проверки на вшивость
не отдавайте числа Round"у


mmb   (2002-11-11 08:11:00) [7]

а ещё есть
function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string;


Separator   (2002-11-11 07:57:00) [8]


function Okr(Value: double; Digit: byte): string;
var
Factor: Extended;
begin
Factor:= Int(Exp(Digit*Ln(10)));
Result:= FloatToStr(Round(Factor*Value)/Factor)
end;


PKT   (2002-11-11 02:24:00) [9]

Или Format-ом воспользуйтесь

Label1.Caption := Format("%5.2n", [AValue]);
2 - число знаков после запятой


Fydgety   (2002-11-10 22:00:00) [10]

RoundTo(AValue,ADigit),где AValue-число,которое округляешь.
ADigit - десятичный порядок, до которого округляешь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо