Главная страница
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.05 c
15-1154099012
vain
2006-07-28 19:03
2006.08.27
AboutBox


15-1154318044
Ююзер
2006-07-31 07:54
2006.08.27
Почему нет меню в дельфийских программах?


6-1143645292
redlord
2006-03-29 19:14
2006.08.27
Проблема с 21 портом (FTP) и не существующим хостом


15-1154412475
Карелин Артем
2006-08-01 10:07
2006.08.27
bahoor - что тако?


2-1155026404
c10wn
2006-08-08 12:40
2006.08.27
поиск с помощью inputbox