Вверх ↑
Ответов: 1291
Рейтинг: 47
#1: 2013-09-25 23:52:15 ЛС | профиль | цитата
Ну, Tad, спасибо за помощь, но
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 - как тогда определить? Читал что преобразование дробных чисел - достаточно сложная штука в программировании. Вот я и напоролся.. За что боролся)

Нужно просто узнать число знаков после точки в дробном числе с учетом нулей. Чтобы определить тип и размерность котировки.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0