24

2つの整数をどのように分割し、Cでdoubleまたはfloatの答えを取得しますか?

4

2 に答える 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 に答える