#c #decimal
#c #десятичное число
Вопрос:
Я на 3-й неделе C и я так потерян. Мне нужно написать программу с функцией decimal — которая вернет десятичную часть любого неотрицательного десятичного числа, отправленного ей в качестве входных данных. Должно быть ясно, что он должен возвращать двойные параметры, установленные в double .
мы еще не узнали ни о функции decimal, ни о принуждении к вводу типов, и попытка научить себя не идет хорошо.
Комментарии:
1.
double decimal(double user_input) { ... }
поместите свой код в фигурные скобки.2. может быть, просто вычтите целочисленную часть…
3. Или вы можете просто преобразовать его в строку, а затем удалить часть перед десятичным числом и добавить к результату 0
4. СПАСИБО ВАМ ВСЕМ! Я получил это с помощью этого #include <iostream> #include <iomanip> с использованием пространства имен std; int main() { cout << «Пожалуйста, введите положительное число с 2 десятичными знаками n»; double a; cin >> a; cout << (a — floor(a)); возвращает 0; }
Ответ №1:
Проверьте следующий пример. Вы можете попробовать что-то вроде этого, что довольно просто.
double num = 23.345;
int intpart = (int)num;
double decpart = num - intpart;
printf("Num = %f, intpart = %d, decpart = %fn", num, intpart, decpart);
Ответ №2:
Вы можете использовать преобразования строк:
#include <algorithm>
#include <iostream>
#include <string>
int main() {
float input = 12.123456;
std::string ip = std::to_string(input);
ip.erase(ip.begin(), --std::find(ip.begin(), ip.end(), '.'));
ip.front() = '0';
std::cout << ip;
return 0;
}
Другим способом было бы просто вычесть пол числа из самого себя…
#include <iostream>
#include <cmath>
int main() {
float input = 12.12;
std::cout << (input - std::floor(input));
return 0;
}
Ответ №3:
Я не уверен, что полностью понимаю ваш вопрос. Вам сложно реализовать эту функцию? Если это так — подумайте о вычитании из него целой части числа, и таким образом вы останетесь только с десятичной частью.
Что-то вроде: (псевдокод)
double a = 10.85
int b = int(a)
return a - b
Ответ №4:
Подумайте о математике.
Десятичное число имеет форму a.b, где a — целая часть, а b — дробная часть.
Предположим, что ваш ввод равен N (= 1.234), тогда для извлечения, скажем, frac = .234, вам просто нужно сделать это
frac = N — этаж (N); помните, что этаж (N) равен 1.000.
Я думаю, что это поможет реализовать код.
Пример:
#include <iostream>
#include <cmath>
int main() {
float input;
std::cin >> input;
std::cout << (input - std::floor(input));
return 0;
}
или
как функция
#include <cmath>
double decimal(const double amp;N){
return (N - std::floor(N));
}
Комментарии:
1. итак, я заставил его работать следующим образом => cout << «Пожалуйста, введите положительное число с 2 десятичными знаками n»; float a; cin >> a; cout << (a — floor(a)); return 0; Однако я должен сделать его двойнымво-первых.
2. что вы подразумеваете под тем, чтобы сделать его двойным? вы присваиваете ему значение double , вместо cout << (…..) присваиваете его переменной double, скажем, double frac = (a — floor(a) ) теперь это уже double . Смотрите функцию, которую я написал в ответе, эта функция возвращает требуемый ответ в виде double ..