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