使用函数decimal只将输入的小数返回为双C++



我在C++的第3周&我太失落了。我需要写一个函数为decimal的程序,它将返回作为输入发送给它的任何非负十进制数的小数部分。需要明确的是,它需要返回一个设置为double的double参数。

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

检查以下示例。你可以尝试这样简单的方法。

double num = 23.345;
int intpart = (int)num;
double decpart = num - intpart;
printf("Num = %f, intpart = %d, decpart = %fn", 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;
}

我肯定完全理解你的问题。你执行这个功能有困难吗?如果是这样的话——想想从中减去数字的整数部分,这样你就只剩下小数部分了。

类似于:(伪代码(

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

想想数学。

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

假设你的输入是N(=1.234(,那么要提取frac=.234,你只需要做

frac=N-楼层(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));
}

最新更新