我在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));
}