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