質問
この質問にはすでに答えがあります:
Cで2つの整数を分割し、ダブルまたはフロートの回答を取得するにはどうすればよいですか?
解決
どちらかをキャストする必要があります float
また double
.
int x = 1;
int y = 3;
// Before
x / y; // (0!)
// After
((double)x) / y; // (0.33333...)
x / ((double)y); // (0.33333...)
もちろん、あなたが保存していることを確認してください 結果 の師団の double
また float
!結果を別の結果に保存する場合、それはあなたに何の役にも立たない int
.
@chadのコメントについて( "[tailsPerField setIntValue:tailsPer]
"):
ダブルまたはフロートを渡さないでください setIntValue
あなたが持っているとき setDoubleValue
, などが利用可能です。これはおそらく、私がコメントで述べたのと同じ問題であり、明示的なキャストを使用していないことであり、ダブルがintとして読まれているため、無効な値を取得しています。
たとえば、私のシステムでは、ファイル:
#include <stdio.h>
int main()
{
double x = 3.14;
printf("%d", x);
return 0;
}
出力:
1374389535
ダブルがintとして読み取られようとしたためです。
他のヒント
タイプキャスティングを使用します。例えば、
main()
{
float a;
int b = 2, c = 3;
a = (float) b / (float) c; // This is type-casting
printf("%f", a);
}
所属していません StackOverflow