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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
qwestcl
10 / 10 / 1
Регистрация: 30.09.2012
Сообщений: 172
#1

цифры после запятой - C++

02.11.2013, 23:22. Просмотров 855. Ответов 12
Метки нет (Все метки)

Нужно из float'ского типа достать значения после запятой.
к примеру имеем число 3.13 нужно получить в итоге int'овское 13.
учитывая:
целая часть всегда равна 3.
гарантировано то, что всегда есть дробная часть(или десятые или сотые).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 23:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос цифры после запятой (C++):

Цифры после запятой - C++
Уважаемые форумчаны, начал изучать С++, и вот столкнулся с такой проблемой: как отформатировать вывод вещественных чисел при помощи...

Цифры после запятой - C++
Доброго времени. Есть код, в котором переменная res в итоге равняется, к примеру 27,5 (float). Мне нужно вывести в файл результат с 3-мя...

Как убрать последние две цифры после запятой? - C++
Как убрать последние две цифры после запятой? остаток от деления? на с++

В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее. - C++
В строке имеется одна точка с запятой ( ; ). Подсчитать количество символов до точки с запятой и после нее.

Почему после 51-го знака после запятой выводятся одни нули? - C++
В продолжение темы: тот же код, только с увеличенным количеством знаков после запятой: #include <iostream> #include <windows.h>...

При выводе числа с плавающей запятой теряются последние цифры - C++
Доброго времени суток! Мне дано число 0,1025390625. double отрезает конец и выводит 0.102539. Как мне сохранить это число целиком и...

12
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.11.2013, 23:26 #2
Цитата Сообщение от qwestcl Посмотреть сообщение
целая часть всегда равна 3.
гарантировано то, что всегда есть дробная часть(или десятые или сотые).
int val=(3.13-3)*100, можно так вычислять!

int val=(peremenna_double - 3)*100
0
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
02.11.2013, 23:27 #3
qwestcl, остатком от деления % - если нужна вся целая часть. Если нет - то переводить в строку и парсить как-нибудь нужные цифры
0
ValeryS
Модератор
6681 / 5090 / 477
Регистрация: 14.02.2011
Сообщений: 17,090
02.11.2013, 23:33 #4
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
qwestcl, остатком от деления % - если нужна вся целая часть.
в плавающих нет остатка от деления
Цитата Сообщение от qwestcl Посмотреть сообщение
к примеру имеем число 3.13 нужно получить в итоге int'овское 13.
учитывая:
целая часть всегда равна 3.
гарантировано то, что всегда есть дробная часть(или десятые или сотые).
ну и как доставать?
чему равны инты
у таких чисел
3.3
3.23
3.454
3.999999
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.11.2013, 23:35 #5
qwestcl, см функцию modf
0
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
02.11.2013, 23:35 #6
ValeryS, воу-воу, и действительно - что-то меня понесло
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.11.2013, 23:37 #7
Да ладно он же вроде в условии всего только сотые, тысячных нет, то просто отак преобразовать да и все (3.13-3)*100 и получим 13, то что нада.
0
ValeryS
Модератор
6681 / 5090 / 477
Регистрация: 14.02.2011
Сообщений: 17,090
02.11.2013, 23:40 #8
ninja2,
а если будет 3.139 ???
округлять или нет?
а если только десятые
3.3
в ответе 3 или 30?
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
02.11.2013, 23:44 #9
C++
#include <iostream>
using std::cout;
using std::endl;
 
int main()
{
  float a = 3.91;
  a *= 100;
  int m = (int)a%10 == 0 ? (int)a/10-30 : (int)a-300;
  cout << m << endl;
}
Добавлено через 1 минуту
Цитата Сообщение от qwestcl Посмотреть сообщение
(или десятые или сотые)
гарантирует
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.11.2013, 00:00 #10
Цитата Сообщение от ValeryS Посмотреть сообщение
а если будет 3.139 ???
округлять или нет?
а если только десятые
3.3
в ответе 3 или 30?
Ну если так, то записать в строку и распарсить.
0
ValeryS
Модератор
6681 / 5090 / 477
Регистрация: 14.02.2011
Сообщений: 17,090
03.11.2013, 00:08 #11
Цитата Сообщение от ninja2 Посмотреть сообщение
Ну если так, то записать в строку и распарсить.
да нафига
programina, вон уже один ответ накидала, ты второй
я жду ответа от ТС чтобы правильно сделать
допустим можно так
C++
1
2
3
int a=(flt-3.0)*100;
if(a%10==0)
 a/=10;
если с округлением то так
C++
1
2
3
int a=(flt-3.0+0.005)*100;
if(a%10==0)
 a/=10;
0
qwestcl
10 / 10 / 1
Регистрация: 30.09.2012
Сообщений: 172
03.11.2013, 00:45  [ТС] #12
задача решена пользователем programina, спасибо.
а для чего добавляют именно это число 0.005при округлении?
0
ValeryS
Модератор
6681 / 5090 / 477
Регистрация: 14.02.2011
Сообщений: 17,090
03.11.2013, 00:49 #13
Цитата Сообщение от qwestcl Посмотреть сообщение
а для чего добавляют именно это число 0.005при округлении?
смотри число 0.123
нужно округлить до сотых и умножить на 100
получилось 12 (12.3--12 дробь отсекается )
теперь берем число 0.129
тоже получилось 12 (12.9--12) а нужно 13
добавляем 0.005
0.129+0.005=0.134*100=13.4--13
0.123+0.005=0.128*100=12.8--12
1
03.11.2013, 00:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 00:49
Привет! Вот еще темы с ответами:

нули после запятой - C++
Остаток на начало месяца Сумма всех элементов взимается этого клиента в этом месяце Сумма всех кредитов применяются на счет этого...

Символы после запятой - C++
Приветствую Посмотрите пожалуйста код, по условию надо сделать что бы после запятой в ответе был ответ с точностью в 2 символа, но...

знаки после запятой - C++
Здравствуйте, простой вопрос на который я никак не могу найти ответ. Почему после компиляции, программа отказывается показывать знаки...

Округление после запятой float - C++
Как прописать формат что бы после запятой было только 2 числа? Тип: FLOAT P.S. Код с пояснениями пожалуйста, изучение начал недавно.


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru