Форум программистов, компьютерный форум CyberForum.ru

На входе дробное число, которое надо преобразовать во float - C++

Восстановить пароль Регистрация
 
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
03.03.2012, 10:22     На входе дробное число, которое надо преобразовать во float #1
Здравствуйте, столкнулся со следующей проблемой: на входе дробное число которое читается из потока посимвольно (состоит из 3 знаков 3.2 5.8 1.2 3.6 и тд) надо преобразовать во float. Например 3.6, 0.6 я получаю делением шестерки на 10, но получаю в итоге 3.599999. Как сего избежать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2012, 10:22     На входе дробное число, которое надо преобразовать во float
Посмотрите здесь:

Преобразовать строку в float C++
printf - дробное число C++
Строка дробное число C++
Дробное число C++
Преобразовать string в float C++
C++ Не отображается дробное число в С++
C++ Преобразовать указатель в float
C++ Как преобразовать число float в int без потери данных?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.03.2012, 18:18     На входе дробное число, которое надо преобразовать во float #2
fenix117, частично, но не полностью, можно решить проблему с помощью типа с большей точностью (double), но в общем случае из-за особенностей представления типов с плавающей точкой в С/С++ проблема не решаема. Почему так происходит, можно почитать тут в разделе 5.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
03.03.2012, 18:26     На входе дробное число, которое надо преобразовать во float #3
Цитата Сообщение от fenix117 Посмотреть сообщение
0.6 я получаю делением шестерки на 10, но получаю в итоге 3.599999.
а никак
прочитай про плавающие числа
дробные числа это степень 2(точнее деление на степень 2)
0.6 никак туда не попадает посему приближение даже в дубле ты получишь
0.599999999....

Добавлено через 2 минуты
если нужно именно 0.6
то вводи свой класс (структуру)
один инт целое число второй десятые
так работает большинство бухгалтерских программ
Yandex
Объявления
03.03.2012, 18:26     На входе дробное число, которое надо преобразовать во float
Ответ Создать тему
Опции темы

Текущее время: 20:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru