Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

FloatToStr   Найти похожие ветки 

 
grisme ©   (2006-08-06 05:44) [0]

Как заставить сабжевую функцию съесть число с дробной точкой, т.к. ей подавай с запятой?..:0)


 
SerJaNT ©   (2006-08-06 07:59) [1]

наверное число не вкусное. поперчил, посалил?


 
SergP ©   (2006-08-06 08:21) [2]

FloatToStr числа с точками кушать просто так не станет, нужно точку указать в "национальных блюдах" (региональных настройках), либо перед тем как кормить FloatToStr, нужно сначала точку дать попробовать DecimalSeparator,после чего FloatToStr тоже станет кушать числа с точками..

:-)


 
SerJaNT ©   (2006-08-06 08:25) [3]


> FloatToStr числа с точками кушать просто так не станет,
> нужно точку указать в "национальных блюдах" (региональных
> настройках), либо перед тем как кормить FloatToStr, нужно
> сначала точку дать попробовать DecimalSeparator,после чего
> FloatToStr тоже станет кушать числа с точками..


одним словом, нужно сначала продегустировать. Так?


 
Loginov Dmitry ©   (2006-08-06 10:35) [4]

> Как заставить сабжевую функцию съесть число с дробной точкой,
> т.к. ей подавай с запятой?..:


Вы случаем ниче не путаете? Функция FloatToStr просто преобразует вещественное число в строковое представление.
Если речь идет о функции StrToFloat, то могу предложить следующий вариант:

function StrToFloat(S: string): Extended;
var
 C: Char;
 I: Byte;
begin
 if DecimalSeparator = "." then C := "," else C := ".";
 I := Pos(C, S);
 if I > 0 then S[I] := DecimalSeparator;
 if not TextToFloat(PChar(S), Result, fvExtended) then
   raise Exception.CreateFmt(matInvalidFloat, [S]);
end;


 
grisme ©   (2006-08-06 11:13) [5]

Просто на коде в билдере вылазят странного рода ошибки. Сначала билдер ругался на перевод double числа в строку и его вывод, хотя несколько моментов назад вывел целую тонну таким же образом переведенных чисел.) Теперь указывает мне на while (условие) { и сообщает, invalid floating operation.

Зы.в условии только сравнение, причем при отладке оно дает истину..:0) и тут же ошибка...спасибо за ответы по DecimalSeparator"у, я тоже пробовал преобразовывать до того, как запостил в этот раздел, видимо причина не в этом..:0)


 
Юрий Зотов ©   (2006-08-06 11:21) [6]

function Str2Float(const S: string): extended;
begin
 Result := StrToFloat(StringReplace(StringReplace(S, ".", DecimalSeparator, []), ",", DecimalSeparator, []))
end;


 
grisme ©   (2006-08-06 12:11) [7]

почему при сравнении двух переменных(в while или if) с типом double, возникает исключение Invalid Floating Operation(на всякий случай, это на C++ Builder)?:0(


 
palva ©   (2006-08-06 22:45) [8]

grisme ©   (06.08.06 12:11) [7]
Возможно, при вычитании двух очень маленьких близких чисел произошла потеря точности (underflower) ?
Нельзя ли получить более подробную диагностику? и сами числа неплохо бы привести.


 
Rater1   (2006-08-07 08:17) [9]

Может комп перегрузить - бывает чего-то кривеет и дельфи начинает ругаться где не попадя... (было один раз такое)...


 
umbra ©   (2006-08-07 10:09) [10]

подобная ошибка "из ниоткуда" (Invalid Floating Point Operation) случается и в делфи при работе в отладчике. Если убрать ближайшую к точке возникновения ошибки точку прерывания, то она исчезнет как по волшебству.



Страницы: 1 вся ветка

Текущий архив: 2006.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.068 c
15-1154269891
Филипок:)
2006-07-30 18:31
2006.08.27
Игра


2-1154950938
webpauk
2006-08-07 15:42
2006.08.27
TstringList.AddObject


1-1152715844
oleggar
2006-07-12 18:50
2006.08.27
автоматизация Paint или другой путь ?


15-1153996666
StriderMan
2006-07-27 14:37
2006.08.27
ООП vs Copy/Paste


2-1154763620
Генадий
2006-08-05 11:40
2006.08.27
int64