atof() в C++
- un4-funeral
- Сообщения: 60
- Зарегистрирован: 18 апр 2008, 23:40
- Контактная информация:
Вобщем проблема в чём
Ввожу в Edit число
например 1.2
Перевожу его во float с помощью atof()
Потом получившееся вывожу на экран. А он мне теперь выводит 1,20000004768372
Почему это происходит ?
конечно можно просто double использовать...всё норм тогда
Но просто интересно...знаю, что там разная точность у типов. Но как со float'ом работать то тогда? =/
Ввожу в Edit число
например 1.2
Перевожу его во float с помощью atof()
Потом получившееся вывожу на экран. А он мне теперь выводит 1,20000004768372
Почему это происходит ?
конечно можно просто double использовать...всё норм тогда
Но просто интересно...знаю, что там разная точность у типов. Но как со float'ом работать то тогда? =/
Округлять до определённого знака после запятой. Только так.
- un4-funeral
- Сообщения: 60
- Зарегистрирован: 18 апр 2008, 23:40
- Контактная информация:
зачем вообще тогда float ввели, если можно ограничиться и double ...
чтоб память сэкономить ?
чтоб память сэкономить ?
un4-funeral, да чтоб занемал меньше памяти float заниает 4 а double - 8 баит в два раза больше !!!!!
- un4-funeral
- Сообщения: 60
- Зарегистрирован: 18 апр 2008, 23:40
- Контактная информация:
ну и ? =/
неужели ради этого люди часто float юзают ?
неужели ради этого люди часто float юзают ?
un4-funeral, ну просто в простых задачах разницы почти нет, так как ты берёш всего максимум 5 переменых (не включая масивы и т.д.) и там разница в несколько байт, а вот в больших проектах если тебе надо будет ввести скажем масив из 1000 елементов (для базы даных например) которым подходит Float а ты им присвоиш Double ты потеряеш уйму памяти + ета база может росшыряца поетому программа будет работать мебленее и медленее так как пробегать по всему массиву будет занимать больше времени а с Float покрайне мере ето будет в 2 раза быстрее !!!!!!!!!!!!!!!!!!!!!!!!!!!
Отнюдь. Для теста создавал два массива из 100000 элементов каждый. В одном все числа равны единице, в другом миллиарду. Цикл по каждому массиву по времени занимает от 0.015 до 0.03 секунд. Если выполнять какие-то действия (я делал инкремент на 1), время увеличивается в среднем до 0.04 для массива из единиц и 0.12 для массива из миллиардов. Разница для конечного пользователя практически незаметная.
Тем более, даже если записей в БД миллион, переход от double к float сэкономит всего 4 МБ оперативки. Учитывая, что сейчас на любом приличном сервере стоит несколько гигабайт ОП, 4 метра - это капля в море.
А вообще в БД большая часть памяти уходит не под числа, а под БЛОБы и под строковые данные
Тем более, даже если записей в БД миллион, переход от double к float сэкономит всего 4 МБ оперативки. Учитывая, что сейчас на любом приличном сервере стоит несколько гигабайт ОП, 4 метра - это капля в море.
А вообще в БД большая часть памяти уходит не под числа, а под БЛОБы и под строковые данные
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- un4-funeral
- Сообщения: 60
- Зарегистрирован: 18 апр 2008, 23:40
- Контактная информация:
((= пасиб за разъяснения
un4-funeral, незачто !