Форум: "Основная";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
ВнизСведение чисел после запятой до сотых Найти похожие ветки
← →
DimChan (2003-10-08 10:40) [0]Уважаемые, помогите или подскажите как из m:= "123,1234" получить m:="123,12", вот как попробовал я:
var x,y : integer;
Begin
x := strtoint(m) * 100;
y := int(x);
x := (x-y)/100;
m := IntToStr(x);
end;
Но все тщетно, и еще буду очень благодарен за функцию которая определяет последнее значение m!
← →
Anatoly Podgoretsky (2003-10-08 10:42) [1]Delete(M,Length(m)-2,2)
s := M
← →
Skier (2003-10-08 10:44) [2]x := (x-y)/100; и Delphi такое компилит ?
← →
Плохиш_ (2003-10-08 10:49) [3]>Skier © (08.10.03 10:44) [2]
В смысле?
>DimChan © (08.10.03 10:40)
StrToFloat, FloatToStrF + F1
← →
DimChan (2003-10-08 11:03) [4]
> Плохиш_ (08.10.03 10:49) [3]
> StrToFloat, FloatToStrF + F1
Я чего-то не пойму к чему это, может я что-то не так делаю?
← →
ZEE (2003-10-08 11:04) [5]var x,y : integer;
...
x := strtoint(m) * 100;
y := int(x);
x := (x-y)/100;
Дельфя в целый тип дробь не пропустит...
и еще
m:= "123,1234";
x := strtoint(m) * 100;
не пройдет если DecimalSeparator="."
← →
Brahman (2003-10-08 11:05) [6]DimChan © (08.10.03 10:40)
Прежде всего, Вам имеет смысл почитать о формах представления чисел в компьютерах.
Еще четко для себя разделить - компьютерное и визуальное представление чисел.
То, что Вы хотите, осуществимо в визуальном (строковом)представлении или в формате BCD.
← →
Bel (2003-10-08 11:05) [7]> Плохиш_ (08.10.03 10:49) [3]
> В смысле?
Результат выражения (x-y)/100 - вещественный, а х - целое.
← →
ZEE (2003-10-08 11:07) [8]дополнительно к [5]
что-то я не то написал
m:="123,1234";
x:=strtoint(m)*100;
это вообще не пройдет в любом случае
в strtoint запятая ну очень мешает...
← →
Song (2003-10-08 11:15) [9]FormatFloat()
← →
Плохиш_ (2003-10-08 11:17) [10]>Bel © (08.10.03 11:05) [7]
Хм ... действительно ограничение :-) мог бы и округлить =)
никогда не пользовался.
← →
DimChan (2003-10-08 12:09) [11]
> Song © (08.10.03 11:15) [9]
> FormatFloat()
Я попробовал
Mproba.text := FormatFloat ("#,##0,00", num);
но требует : Incompatible types: "Extended" and "String"
← →
Mystic (2003-10-08 12:09) [12]Из модуля Math:
function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;
var
LFactor: Double;
begin
LFactor := IntPower(10, ADigit);
Result := Round(AValue / LFactor) * LFactor;
end;
function SimpleRoundTo(const AValue: Double; const ADigit: TRoundToRange = -2): Double;
var
LFactor: Double;
begin
LFactor := IntPower(10, ADigit);
Result := Trunc((AValue / LFactor) + 0.5) * LFactor;
end;
← →
ZEE (2003-10-08 12:11) [13]> DimChan © (08.10.03 12:09) [11]
> Я попробовал
> Mproba.text := FormatFloat ("#,##0,00", num);
> но требует : Incompatible types: "Extended" and "String"
так ты наверняка в num строку запихиваешь, а надо число
← →
DimChan (2003-10-08 12:49) [14]
> ZEE © (08.10.03 12:11) [13]
> так ты наверняка в num строку запихиваешь, а надо число
Конечно ты прав! Поэтому я:
Var x:Variant;
Begin
...
x := Num;
Mproba.text := FormatFloat ("0.00", x);
но, есть проблема - FormatFloat округляет число в большую сторону, если num := "123,456" ,то на выходе дает "123,46", а мне надо "123,45"...
← →
ZEE (2003-10-08 13:06) [15]> DimChan © (08.10.03 12:49) [14]
> но, есть проблема - FormatFloat округляет число в большую
> сторону, если num := "123,456" ,то на выходе дает "123,46",
> а мне надо "123,45"...
тогда надо только со строками работать: Pos(), SetLength()...
← →
DimChan (2003-10-08 13:16) [16]
> ZEE © (08.10.03 13:06) [15]
> тогда надо только со строками работать: Pos(), SetLength()...
Может ты и прав, тогда может кто подскажет как удалять ненужные символы, или хотя бы где на это можно взглянуть...
← →
ZEE (2003-10-08 13:19) [17]примерно так:
var s:string;
i:integer;
...
s:="123,1234";
i:=pos(",",s);
if (i>0)and(length(s)>i+2) then
begin
SetLength(s,i+2);
end;
можешь еще доработать чтоб нолики добавляло если после запятой нехватает :)
← →
DimChan (2003-10-08 13:54) [18]
> ZEE ©
> SetLength(s,i+2);
Я так понял это длинна s, но программа ругается:
Constant object cannot be passed as var parameter
← →
DimChan (2003-10-08 14:37) [19]Слушай, а у Edit есть возможность задать маску ввода ?
← →
ZEE (2003-10-08 15:12) [20]SetLength - это задание длины у строки - в него нельзя запихивать константу или ридонли св-во (наверно пишешь SetLength(Edit1.Text,i+2); - низя)
← →
ZEE (2003-10-08 15:13) [21]> DimChan © (08.10.03 14:37) [19]
> Слушай, а у Edit есть возможность задать маску ввода?
для этого есть TMaskEdit
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.04 c