1) во первых, я хочу сохранить ту точность, которая уже была до конвертации, а не приводить ее к своей. Количество знаков после точки непостоянно;
2) мне нужно именно преобразование real->string с сохранением всех имеющихся нулей;
3) мне нужен именно код, а не схема;
Сейчас пытаюсь как-то так, но все равно не то:
#pas
function THIGrapher3.GetDigits(X: Double): integer;
var
p,p2:double;
ln1,ln2,cnt,i:integer;
s1,s2:string;
begin
p:=0.0001;
s1:= Double2str(X);
ln1:=length(s1);
p2:=X+p;
ln2:=length(Double2str(p2));
//if ln1=ln2 then Result:= length(copy(s1,pos('.',s1)+1,30));
if ln1<ln2 then begin
cnt:=ln2-ln1;
//for i:=0 to cnt - 1 do s1:=s1 + '0'
Result:= length(copy(s1,pos('.',s1)+1,30))+cnt;
end;
end;
Прибавляя маленькое число, чтобы избавиться от нулей. Но если вдруг котировка будет равна 80.00 - как тогда определить? Читал что преобразование дробных чисел - достаточно сложная штука в программировании. Вот я и напоролся.. За что боролся)
Нужно просто узнать число знаков после точки в дробном числе с учетом нулей. Чтобы определить тип и размерность котировки.