Использование функции decimal для возврата только десятичного числа входных данных как double C

#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 ..