如何将整数和十进制数分成两个不同的变量

时间:2017-11-14 16:58:20

标签: c++

我试图将整数和十进制数分开 两个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

可以超过两位小数。 任何简单的方法

2 个答案:

答案 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;
}

当数字不包含小数点时,应添加错误检查以捕获案例。