![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как ограничить количество знаков после запятой? [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 - десятичный порядок, до которого округляешь.