atof() в C++

Ответить
Аватара пользователя
un4-funeral
Сообщения: 58
Зарегистрирован: 18 апр 2008, 23:40
Контактная информация:

22 апр 2008, 20:11

Вобщем проблема в чём
Ввожу в Edit число
например 1.2
Перевожу его во float с помощью atof()
Потом получившееся вывожу на экран. А он мне теперь выводит 1,20000004768372

Почему это происходит ?


конечно можно просто double использовать...всё норм тогда
Но просто интересно...знаю, что там разная точность у типов. Но как со float'ом работать то тогда? =/
Аватара пользователя
WinMain
Сообщения: 912
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

22 апр 2008, 22:53

Округлять до определённого знака после запятой. Только так.
Приглашаю на свой сайт http://winmain.org
Аватара пользователя
un4-funeral
Сообщения: 58
Зарегистрирован: 18 апр 2008, 23:40
Контактная информация:

22 апр 2008, 23:03

зачем вообще тогда float ввели, если можно ограничиться и double ...
чтоб память сэкономить ?
Vovchik
Сообщения: 190
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

23 апр 2008, 09:41

un4-funeral, да чтоб занемал меньше памяти float заниает 4 а double - 8 баит в два раза больше !!!!!
Аватара пользователя
un4-funeral
Сообщения: 58
Зарегистрирован: 18 апр 2008, 23:40
Контактная информация:

23 апр 2008, 17:25

ну и ? =/
неужели ради этого люди часто float юзают ?
Vovchik
Сообщения: 190
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

23 апр 2008, 21:11

un4-funeral, ну просто в простых задачах разницы почти нет, так как ты берёш всего максимум 5 переменых (не включая масивы и т.д.) и там разница в несколько байт, а вот в больших проектах если тебе надо будет ввести скажем масив из 1000 елементов (для базы даных например) которым подходит Float а ты им присвоиш Double ты потеряеш уйму памяти + ета база может росшыряца поетому программа будет работать мебленее и медленее так как пробегать по всему массиву будет занимать больше времени а с Float покрайне мере ето будет в 2 раза быстрее !!!!!!!!!!!!!!!!!!!!!!!!!!!
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

24 апр 2008, 11:34

Отнюдь. Для теста создавал два массива из 100000 элементов каждый. В одном все числа равны единице, в другом миллиарду. Цикл по каждому массиву по времени занимает от 0.015 до 0.03 секунд. Если выполнять какие-то действия (я делал инкремент на 1), время увеличивается в среднем до 0.04 для массива из единиц и 0.12 для массива из миллиардов. Разница для конечного пользователя практически незаметная.
Тем более, даже если записей в БД миллион, переход от double к float сэкономит всего 4 МБ оперативки. Учитывая, что сейчас на любом приличном сервере стоит несколько гигабайт ОП, 4 метра - это капля в море.
А вообще в БД большая часть памяти уходит не под числа, а под БЛОБы и под строковые данные
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
un4-funeral
Сообщения: 58
Зарегистрирован: 18 апр 2008, 23:40
Контактная информация:

24 апр 2008, 16:28

((= пасиб за разъяснения
Vovchik
Сообщения: 190
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

24 апр 2008, 17:46

un4-funeral, незачто !
Ответить