Работа с дробными числами в делфи

Bicdibus

Участник
Регистрация
5 Мар 2010
Сообщения
497
Реакции
7
итак есть текстовій файл в котором хранятся числа (1.5 1.2 і т. д.) єти чсла должні считіватся и с ними проводится математические операции при считываю я их в переменную типа стринг, потом преобразую в чсло функцией strtofloat temp:=strtofloat(znak); temp имеет тип real но прога говорит "1.3 is not floating value". в чем загвоздка? каким образом ещоможно преобразовать стринг в дробное число?
 
сначала надо поменять . на , для всех строк
цикл
begin
poz:=Pos('.',znak);
Delete(znak,poz,1);
Insert(',',znak,poz);
temp:=strtofloat(znak);
end;
 
блин там что кома вместо точки должна бить, а я парюсь епт.
 
Если 1.3 is not floating value тогда 1,3 точно floating value :)
 
Можно настроить
Код:
DecimalSeparator := '.';
или
Код:
DecimalSeparator := ',';
 
только если менять, то не 5-ю строками, а AnsiReplace в StrUtils модуле есть
 
temp := StrToFloat(StringReplace(znak, '.', DecimalSeparator, []));

Для надежности можно так:
s := StringReplace(znak, '.', DecimalSeparator, []);
s := StringReplace(s, ',', DecimalSeparator, []);
temp := StrToFloat(s);

если вдруг на какой-нибудь машине окажется наоборот, в файле запятые, а в локали точка
 
StrToFloatDef - на случай ошибки конвертирования
 
Назад
Сверху