37 / 31 / 4
Регистрация: 21.10.2013
Сообщений: 197

Преобразовать double в два int: целую и дробную части

01.04.2014, 21:11. Показов 5643. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если найдется добрый человек, который напишет небольшую функцию, которая float поделит на 2 int, целую часть и дробную соответственно, благодарность моя не будет знать границ. С целой частью все просто, а вот как превратить в целое то, что после запятой не соображу. Число получается из программы, так что читать по символу из строки не получится.

PS если долго мучиться, что-нибудь получится, но ведь у кого-нибудь точно найдется велосипед.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2014, 21:11
Ответы с готовыми решениями:

Из числа float получить два int-a: целую и дробную части
Всем привет. Как можно из числа float получить два inta. приведу пример: есть 1,45 и 2,397. из первого нужно получить 1 и 45, из второго 2...

Напишите программу, которая получает число типа long double и выводит его целую и дробную части
мое решение #include<stdio.h> #include<math.h> int main() { long double x;// = 23.234; scanf("%Lf", &x); long...

Как преобразовать дробную часть числа типа double в int
Есть дробное число, например Z = 123,456 нужно разбить его на два целых числа int I = 123 int F = 456 как это можно сделать ? ...

7
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
01.04.2014, 21:30
Тоесть надо вывести целое число после и перед запятой
0
Модератор
Эксперт С++
 Аватар для zss
13761 / 10957 / 6488
Регистрация: 18.12.2011
Сообщений: 29,218
01.04.2014, 21:32
C++
1
2
3
4
double s=1.234;
int celaya,drobnaya;
celaya=(int)s;
drobnaya=int((s-celaya)*1000.0);// получим 3 цифры дробной части
0
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
01.04.2014, 21:38
Всё гараздо проше
float b=9.6;
a=int b(9);
printf("%0.1f",b(6))
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
01.04.2014, 21:42
Цитата Сообщение от Timophiy Посмотреть сообщение
C++
1
a=int b(9);
Что за магия такая? О_о
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
02.04.2014, 02:15
Лучший ответ Сообщение было отмечено IrineK как решение

Решение

Цитата Сообщение от Angeline Посмотреть сообщение
Число получается из программы, так что читать по символу из строки не получится.
Допустим у нас есть
C++
1
double num = 158679.3 / 22.6666;
т.е. число получается "из программы".

И теперь будем преобразовывать в строки и назад - и получится )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <iomanip>
#include <sstream>
using namespace std;
 
void SplitDouble (double src, long int &floor_, long int &fraction)
{   floor_ = fraction = 0;
    ostringstream oss;
    istringstream iss;
    string snum, snum1, snum2;
 
    oss << fixed << setprecision(9) << src;
    snum = oss.str();
    int pos = snum.find_first_of (".");
 
    snum1 = snum.substr(0, pos);
    snum2 = snum.substr(pos+1);
    
    iss.str(snum1);         iss >> floor_;
    iss.str("");            iss.clear();
    iss.str(snum2);         iss >> fraction;
}
 
 
int main()
{   double num = 158679.3 / 22.6666;
    long int num1, num2;
    
    num1 = num2 = 0;
    SplitDouble (num, num1, num2);
 
    cout << "Double: " << fixed << setprecision (9) << num << '\n';
    cout << "Floor: " << num1 << '\t' << "Fraction: " << num2;
    
    cin.get();
    return 0;
}
Точность для дробной части выставляем не больше 9, иначе в 4 байта long int не влезет.
int, кстати тоже 4 байта чаще всего, но - не всегда.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.04.2014, 11:44
Лучший ответ Сообщение было отмечено Angeline как решение

Решение

Всё придумано до нас: http://www.cplusplus.com/reference/cmath/modf/
2
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
02.04.2014, 19:14
Цитата Сообщение от Tulosba Посмотреть сообщение
Всё придумано до нас
И чего мы здесь корячимся?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2014, 19:14
Помогаю со студенческими работами здесь

Разделение числа на целую и дробную части
Добрый день! Можно ли разделить число например 95.05 на 95 и 05 и как это сделать?

Поменять местами дробную и целую части числа
Дано действительное число R вида nnn. ddd (три цифровых разряда в дробной и целой частях). Поменять местами дробную и целую части числа...

Найти и напечатать его целую, дробную части и округленное значение
Дано вещественное число. Найти и напечатать его целую, дробную части и округленное значение. Использовать функции округления

Преобразовать 2 числа int в 1 число float(double) | double int1.int2
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

Два числа int в double
Собственно, вот вопрос: есть два числа int a=0; int b=4; как из них сделать double c= 0.4?


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

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

Новые блоги и статьи
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru