PDA

Просмотр полной версии : atof() в C++



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

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


конечно можно просто double использовать...всё норм тогда
Но просто интересно...знаю, что там разная точность у типов. Но как со float'ом работать то тогда? =/

WinMain
22.04.2008, 22:53
Округлять до определённого знака после запятой. Только так.

un4-funeral
22.04.2008, 23:03
зачем вообще тогда float ввели, если можно ограничиться и double ...
чтоб память сэкономить ?

Vovchik
23.04.2008, 09:41
un4-funeral, да чтоб занемал меньше памяти float заниает 4 а double - 8 баит в два раза больше !!!!!

un4-funeral
23.04.2008, 17:25
ну и ? =/
неужели ради этого люди часто float юзают ?

Vovchik
23.04.2008, 21:11
un4-funeral, ну просто в простых задачах разницы почти нет, так как ты берёш всего максимум 5 переменых (не включая масивы и т.д.) и там разница в несколько байт, а вот в больших проектах если тебе надо будет ввести скажем масив из 1000 елементов (для базы даных например) которым подходит Float а ты им присвоиш Double ты потеряеш уйму памяти + ета база может росшыряца поетому программа будет работать мебленее и медленее так как пробегать по всему массиву будет занимать больше времени а с Float покрайне мере ето будет в 2 раза быстрее !!!!!!!!!!!!!!!!!!!!!!!!!!!

Хыиуду
24.04.2008, 11:34
Отнюдь. Для теста создавал два массива из 100000 элементов каждый. В одном все числа равны единице, в другом миллиарду. Цикл по каждому массиву по времени занимает от 0.015 до 0.03 секунд. Если выполнять какие-то действия (я делал инкремент на 1), время увеличивается в среднем до 0.04 для массива из единиц и 0.12 для массива из миллиардов. Разница для конечного пользователя практически незаметная.
Тем более, даже если записей в БД миллион, переход от double к float сэкономит всего 4 МБ оперативки. Учитывая, что сейчас на любом приличном сервере стоит несколько гигабайт ОП, 4 метра - это капля в море.
А вообще в БД большая часть памяти уходит не под числа, а под БЛОБы и под строковые данные

un4-funeral
24.04.2008, 16:28
((= пасиб за разъяснения

Vovchik
24.04.2008, 17:46
un4-funeral, незачто !