除以两个整数以产生浮点结果

jwb*_*ley 51 c++ precision integer-division

可能重复:
为什么我不能从被分割的两个整数中返回一个双精度数

即使我尝试将输出放入浮点数,我的C++程序也会截断整数分割的输出.如何在保持变量(a和b)为整数的同时防止这种情况?

user@box:~/c/precision$ cat precision.cpp
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
  int a = 10, b = 3;
  float ans = (a/b);
  cout<<fixed<<setprecision(3);
  cout << (a/b) << endl;
  cout << ans << endl;
  return 0;
}

user@box:~/c/precision$ g++ -o precision precision.cpp 
user@box:~/c/precision$ ./precision 
3
3.000
Run Code Online (Sandbox Code Playgroud)

cdi*_*ins 88

将操作数转换为浮点数:

float ans = (float)a / (float)b;
Run Code Online (Sandbox Code Playgroud)

  • 严格来说,你只需要将一个整数转换为浮点数,但这确实使它更加清晰. (26认同)
  • 由于我们在这里使用C++,请使用`static_cast`.请注意,可以使用类型除法规则并简单地执行`float ans = static_cast <float>(a)/ b;` (14认同)