web-dev-qa-db-ja.com

2つの整数を除算して浮動小数点の結果を生成する

可能性のある複製:
分割されている2つの整数からdoubleを返せない理由

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
50
jwbensley

オペランドを浮動小数点数にキャストします。

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