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

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

Восстановить пароль Регистрация
 
qwestcl
10 / 10 / 1
Регистрация: 30.09.2012
Сообщений: 172
02.11.2013, 23:22     цифры после запятой #1
Нужно из float'ского типа достать значения после запятой.
к примеру имеем число 3.13 нужно получить в итоге int'овское 13.
учитывая:
целая часть всегда равна 3.
гарантировано то, что всегда есть дробная часть(или десятые или сотые).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 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
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
02.11.2013, 23:27     цифры после запятой #3
qwestcl, остатком от деления % - если нужна вся целая часть. Если нет - то переводить в строку и парсить как-нибудь нужные цифры
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
02.11.2013, 23:33     цифры после запятой #4
Цитата Сообщение от kventin_zhuk Посмотреть сообщение
qwestcl, остатком от деления % - если нужна вся целая часть.
в плавающих нет остатка от деления
Цитата Сообщение от qwestcl Посмотреть сообщение
к примеру имеем число 3.13 нужно получить в итоге int'овское 13.
учитывая:
целая часть всегда равна 3.
гарантировано то, что всегда есть дробная часть(или десятые или сотые).
ну и как доставать?
чему равны инты
у таких чисел
3.3
3.23
3.454
3.999999
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.11.2013, 23:35     цифры после запятой #5
qwestcl, см функцию modf
kventin_zhuk
БНТУ ФИТР
 Аватар для kventin_zhuk
214 / 154 / 15
Регистрация: 26.12.2012
Сообщений: 382
02.11.2013, 23:35     цифры после запятой #6
ValeryS, воу-воу, и действительно - что-то меня понесло
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.11.2013, 23:37     цифры после запятой #7
Да ладно он же вроде в условии всего только сотые, тысячных нет, то просто отак преобразовать да и все (3.13-3)*100 и получим 13, то что нада.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
02.11.2013, 23:40     цифры после запятой #8
ninja2,
а если будет 3.139 ???
округлять или нет?
а если только десятые
3.3
в ответе 3 или 30?
programina
 Аватар для programina
1912 / 597 / 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 Посмотреть сообщение
(или десятые или сотые)
гарантирует
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.11.2013, 00:00     цифры после запятой #10
Цитата Сообщение от ValeryS Посмотреть сообщение
а если будет 3.139 ???
округлять или нет?
а если только десятые
3.3
в ответе 3 или 30?
Ну если так, то записать в строку и распарсить.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
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;
qwestcl
10 / 10 / 1
Регистрация: 30.09.2012
Сообщений: 172
03.11.2013, 00:45  [ТС]     цифры после запятой #12
задача решена пользователем programina, спасибо.
а для чего добавляют именно это число 0.005при округлении?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 00:49     цифры после запятой
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
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
Yandex
Объявления
03.11.2013, 00:49     цифры после запятой
Ответ Создать тему
Опции темы

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