C++ 将两个整数相除以产生浮点结果

C++ 将两个整数相除以产生浮点结果,c++,precision,integer-division,C++,Precision,Integer Division,可能重复: < >我的C++程序截断了我的整数DEVISION,甚至当我尝试把输出放到一个浮点上。如何防止这种情况发生,同时将变量(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); c

可能重复:

< >我的C++程序截断了我的整数DEVISION,甚至当我尝试把输出放到一个浮点上。如何防止这种情况发生,同时将变量(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
user@box:~/c/precision$cat precision.cpp
#包括
#包括
使用名称空间std;
int main()
{
INTA=10,b=3;
浮动ans=(a/b);

cout将操作数强制转换为浮点:

float ans = (float)a / (float)b;

float ans=((float)a/b);(或静态_cast以取悦纯粹主义者)是的,我的错误,我确实搜索了一下,但没有找到那篇文章。这是一个dup,我的错!而且,float的精度只有这么高。你的整数除法可能需要“双精度”严格地说,你只需要将一个整数转换为浮点,虽然它确实使它格外清晰。<代码> int k;k/3;<代码> >代码> /<代码>将调用<代码> int >代码>类,那么,为什么一个int甚至提名者或分母都会工作?因为我们使用C++,所以使用<代码> STAT。ic_cast
。请注意,可以使用类型划分规则,只需像
float ans=static_cast(a)/b;
绝对疯狂小子!谢谢你的支持。