![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Формат чисел
ValeX © (2002-07-03 14:24:00)Есть, например, числа:
0.000001
5.061
48.3016
Необходимо выводить на Label в формате - 2 цифры после запятой,
но если вторая цифра нуль, ее не выводить, и если два ноля,
их не показывать.
ЗЫ FloatToStrF не предлагать, надо универсальную процедуру,
чтобы ввел любое число, а на выходе стринг.
ValeX (2002-07-03 16:11:00) [1]
to ALL
Вопрос снят, всем спасибо :)
ЗЫ Только уточнение:
FormatFloat("0.##", моё число);
:))
Anatoly Podgoretsky (2002-07-03 16:01:00) [2]Не ну что бы была справедливость, то FormatFloat("0.##", не наше число);
Johnmen (2002-07-03 15:38:00) [3]А я и не обижаюсь, просто категоричность несколько напрягла :)))
Вообще, прав MBo © (03.07.02 15:14)...
Kaban (2002-07-03 15:26:00) [4]Да я, собственно, никого не хотел обидеть
Johnmen (2002-07-03 15:24:00) [5]>Kaban © (03.07.02 15:10)
Ну зачем же так...Я всегда в обязательном порядке читаю все предшествующие посты.
И если тебе нетрудно - посмотри разницу менду моим ответом и тем,
который появился спустя 11 минут после первого упоминания функции formatfloat
Kaban (2002-07-03 15:17:00) [6]ну если так, то да. уже привык мерить своими мерками
MBo (2002-07-03 15:14:00) [7]>некоторые не хотят просмотреть, что отвечали другие
не обязательно - иногда ветки загрузишь, ответишь не сразу (особенно по dialup), а за это время налетят коршуны ;)
Kaban (2002-07-03 15:10:00) [8]я так понимаю, что некоторые не хотят просмотреть, что отвечали другие, и несмотря на то, что уже дано 10 ответов лепят свой.
Иначе например, ответ от Johnmen в (03.07.02 14:45), который появился спустя 11 минут после первого упоминания функции formatfloat ничем не объяснить
MBo (2002-07-03 15:07:00) [9]забавно, что простые вопросы часто вызывают бурю постингов ;)
Kaban (2002-07-03 15:01:00) [10]Вы полагаете Result:=FloatToStr(Round(Value*100)/100);
проще чем, упомянутое пять раз FormatFloat("0.##", MyValue)?
Кулюкин Олег (2002-07-03 15:01:00) [11]FormatFloat("0.##", MyValue)
ValeX (2002-07-03 14:57:00) [12]
Kaban
Andrey007
оказалось достаточно:
Result:=FloatToStr(Round(Value*100)/100);
:)
To All, tnx!
Andrey007 (2002-07-03 14:55:00) [13]2 Valex:
Та ошибка была. Надо так:
if s[pos(DecimalSeparator,s)+1]"0" then t:=t+s[pos(DecimalSeparator,s)+1]
else
begin
if s[pos(DecimalSeparator,s)+2]"0" then t:=t+"0"+s[pos(DecimalSeparator,s)+2];
Break
end;
if s[pos(DecimalSeparator,s)+2]"0" then t:=t+s[pos(DecimalSeparator,s)+2];
2 Kaban & MBo:
Если Valex этого хочет, то пусть
Kaban (2002-07-03 14:50:00) [14]как это не пашет?
Kaban (2002-07-03 14:49:00) [15]ну и наконец я от себя добавлю:
FormatFloat("0.##", Твое число);
:)
ValeX (2002-07-03 14:48:00) [16]Andrey007
не пашет :(
Johnmen (2002-07-03 14:45:00) [17]FormatFloat("0.##",<число>);
MBo (2002-07-03 14:43:00) [18]>Kaban ©
и точно ;)
label1.caption:=formatfloat("0.##",d);
Kaban (2002-07-03 14:42:00) [19]2Andrey007
Извращение
Andrey007 (2002-07-03 14:41:00) [20]function GetNum(x: Real): String;
var s,t: String;
i,j: Word;
begin
s:=FloatToStr(Round(x*100)/100);
t:="";
for i:=0 to length(s) do
begin
if i>pos(DecimalSeparator,s) then
begin
if s[pos(DecimalSeparator,s)+1]<>"0" then t:=t+s[i];
if s[pos(DecimalSeparator,s)+2]<>"0" then t:=t+s[i];
Break
end
else t:=t+s[i]
end;
Result:=t
end;