Страница 1 из 1

atof() в C++

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

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


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

Re: atof() в C++

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

Re: atof() в C++

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

Re: atof() в C++

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

Re: atof() в C++

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

Re: atof() в C++

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

Re: atof() в C++

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

Re: atof() в C++

Добавлено: 24 апр 2008, 16:28
un4-funeral
((= пасиб за разъяснения

Re: atof() в C++

Добавлено: 24 апр 2008, 17:46
Vovchik
un4-funeral, незачто !