これは、整数除算を行っているためです。
あなたが本当に欲しいのは、浮動小数点数の除算です:
#include<iostream>
using std::cout;
int main()
{
float pie;
pie = float(22)/7;// 22/(float(7)) is also equivalent
cout<<"The Value of Pi(22/7) is "<< pie<<"\n";
return 0;
}
ただし、この型変換: float(variable)
orfloat(value)
は型安全ではありません。
次のように、計算している値が最初から浮動小数点であることを確認することで、必要な値を取得できた可能性があります。
22.0/7
また
22/7.0
また
22.0/7.0
しかし、これは一般的に面倒で、作業しているすべての型を追跡する必要があります。したがって、最終的かつ最良の方法は、 static_cast を使用することです。
static_cast<float>(22)/7
また
22/static_cast<float>(7)
static_castを使用する理由については、次を参照してください。
(int)x の代わりに static_cast<int>(x) を使用する理由