Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c