我试图将整数和十进制数分开 两个int变量
#include <iostream>
#include <iomanip>
#include<math.h>
using namespace std;
int main()
{
double initialAmount = 42800.13;
double fractionalPart = initialAmount - floor(initialAmount);
cout<<int(initialAmount)<<"\n"<<fractionalPart<<"\n";
}
现在的输出是
42800
0.13
预期产出
42800
13
可以超过两位小数。 任何简单的方法
答案 0 :(得分:3)
也许不是最好的解决方案,但至少它很简单:)
将double
initialAmount
存储在int
中 - 这会截断小数部分。然后你有小数点前面的数字。然后从初始值中减去该值,并且只剩下小数点后面的部分。乘以你认为重要的10个权力然后再将其存储在int
并且你将拥有你的两个值。
答案 1 :(得分:1)
正如评论中所建议的那样,将数字转换为字符串可能会有所帮助。这是一种可能性:
#include <sstream>
#include <iostream>
#include <vector>
#include <string>
int main() {
double d = 42800.13;
std::vector<std::string> numbers_s;
std::string s;
std::istringstream numberAsString(std::to_string( d ));
while (getline(numberAsString, s, '.')) {
numbers_s.push_back(s);
}
std::cout << "whole number:" << numbers_s[0] << std::endl;
//[ remove trailing zeros from fractional part:
numbers_s[1].erase(numbers_s[1].find_last_not_of('0') + 1, std::string::npos);
//]
std::cout << "fractional part:" << std::stoi(numbers_s[1]) << std::endl;
}
当数字不包含小数点时,应添加错误检查以捕获案例。