使用函数 decimal to return only decimal of input as double C++

Using function decimal to return only decimal of input as double C++

我在学习 C++ 的第 3 周,我很迷茫。我需要编写一个带有 decimal 函数的程序——它将 return 任何非负十进制数的小数部分作为输入发送给它。需要明确的是需要return一个double - 参数设置为double.

我们还没有学习 decimal 函数,也没有学习强制类型转换,尝试自学并不顺利。

想想数学。

十进制数的形式为 a.b,其中 a 是整数部分,b 是小数部分。

假设你的输入是 N (= 1.234) 然后提取 frac = .234 你只需要做的是

frac = N - floor(N);记住 floor(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 &N){
    return (N - std::floor(N));
}

我不确定我是否完全理解你的问题。 您是否很难实现此功能? 如果是这样 - 考虑从中减去数字的整数部分,这样你将只保留小数部分。

类似于:(伪代码)

double a = 10.85
int b = int(a)
return a - b

检查以下示例。您可以尝试这样的操作,非常简单。

  double num = 23.345;
  int intpart = (int)num;
  double decpart = num - intpart;
  printf("Num = %f, intpart = %d, decpart = %f\n", num, intpart, decpart);

您可以使用字符串转换:

#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;
}