Форум: "Начинающим";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
ВнизFloatToStr и другое... Найти похожие ветки
← →
Wood (2007-06-14 12:49) [0]Уважаемые мастера.
Есть некая функция (не моя) округления дробных чисел до 2х знаков после запятой..
Посылая ей Extended получаю строку в формате "0,00". Но по непонятным причинам иногда возвращается "0,0000....". При трассировке вижу нормально округленное число (extended), но после преобразования в FloatToStr() результат получается "длиннее" параметра (знаков после запятой становится больше). На функцию я не грешу, грешу на свои ошибки, которые пока не вижу. Но все же, может ли быть само по себе такое? И может ли быть.. эм.. "мусор" в значении результата, к примеру, 0,789999..?
Спасибо.
PS:"Я спросил у яндекса... Я спросил у рамблера..."(с))
← →
Ega23 © (2007-06-14 13:00) [1]чему равно 0.999999999999999999999999999999999999999999?
← →
kukuikar © (2007-06-14 13:03) [2]FloatToStrF(VAL,ffFixed,10,2) - чем не походит?
← →
Правильный Вася (2007-06-14 13:05) [3]
> При трассировке вижу нормально округленное число (extended)
не бывает такого
← →
Anatoly Podgoretsky © (2007-06-14 13:08) [4]
> не бывает такого
Вообще не может быть - по определению
← →
Wood (2007-06-15 04:56) [5]
> Ega23 © (14.06.07 13:00) [1]
>
> чему равно 0.999999999999999999999999999999999999999999?
>
1,0
> kukuikar © (14.06.07 13:03) [2]
>
> FloatToStrF(VAL,ffFixed,10,2) - чем не походит?
>
подходит, но речь пока не об этой функции
> Правильный Вася (14.06.07 13:05) [3]
> Anatoly Podgoretsky © (14.06.07 13:08) [4]
>
> > При трассировке вижу нормально округленное число (extended)
>
> не бывает такого
может не так поняли меня.. Число, к примеру, 9933.7828, которое при FloatToSTr() получается 9933.7899999 при трассировке и наведению на результ мышью я вижу 9933.78.
Более того, результат функции не всегда такой, чаще после запятой 2 знака.
Значит, на мой вопрос
Но все же, может ли быть само по себе такое? И может ли быть.. эм.. "мусор" в значении результата, к примеру, 0,789999..?
ответ - нет?
← →
Плохиш © (2007-06-15 11:00) [6]
> На функцию я не грешу, грешу на свои ошибки, которые пока
> не вижу.
Думаешь нам твои ошибки отсюда виднее. Хотя одну я вижу - это ошибка в ДНК...
← →
sniknik © (2007-06-15 11:25) [7]> я вижу 9933.78.
ты видиш не число... (ложки нет) ты видиш его строковое представление в виде определяемом какими то правилами...
а у чисел с плавающей запятой нет понятия количества символов после нее... а вообще вот
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
← →
Wood (2007-06-15 14:50) [8]
> Плохиш © (15.06.07 11:00) [6]
ошибка в днк вообще не может быть - по определению. Зачем нозить-то?
что тут смотреть-то передается в функцию extended и возвращается строка все...
Видимо, трудно ответить да или нет на основной вопрос ветки...
> sniknik © (15.06.07 11:25) [7]
сенкс, почитаю...
← →
Anatoly Podgoretsky © (2007-06-15 16:06) [9]> Wood (15.06.2007 14:50:08) [8]
> ошибка в днк вообще не может быть - по определению.
Это означает, что только в случае отсутствия.
← →
Alex_C © (2007-06-15 18:41) [10]То Wood: объясню без лишних приколов - ты столкнулся с проблемой чисел с плавающей точкой. Суть этой проблемы в том, что дельфя тебе показывает ОКРУГЛЕННОЕ значение переменной при трассировке. Т.е. ты видишь 8.12, а на самом деле имеем 8.119999999999... эта проблема достаточно сложна. В [7] ссылка на нее дана . Прочитай.
И еще на будущее. Никогда не сравнивай 2 числа с плавающей точкой на равенство. На вид они будут вроде равны, а рез-т будет не таким.
← →
Wood (2007-06-16 10:46) [11]
> Anatoly Podgoretsky © (15.06.07 16:06) [9]
генетики, млин :)) ДНК...РНК... Все бы забавлялись на старости лет :-)
> Alex_C © (15.06.07 18:41) [10]
Спасибо. Я никогда не сравнивал 2 числа с плавающей точкой...
И я получил ответы на свои вопросы.
← →
Anatoly Podgoretsky © (2007-06-16 11:27) [12]> Wood (16.06.2007 10:46:11) [11]
Ну ты то забавляешься в молодости.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c