Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1181293492
REA
2007-06-08 13:04
2007.07.08
type string


1-1178560118
TStas
2007-05-07 21:48
2007.07.08
Какое сообщение надо послать окну, чтобы оно развернулось?


2-1181745303
левый позер
2007-06-13 18:35
2007.07.08
application.messagebox


1-1178351020
nali
2007-05-05 11:43
2007.07.08
Ошибка при запуске делфи


2-1181775246
rosl
2007-06-14 02:54
2007.07.08
удаление файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский