1

以下の値はfhr_10.0 として計算されます なぜfhr_10.3 ではないのですか?

        double fhr_1; 
        int n_fhr_1 = 9;
        int n_fhr_0 = 15;
        int n_fhr_2 = 6;

        fhr_1 = n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);
4

3 に答える 3

7

doubleタイプのオペランドが少なくとも 1 つ必要です。そうしないと、整数の結果が得られます(整数除算が発生します)

fhr_1 = (double)n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);

または

fhr_1 = n_fhr_1/(double)(n_fhr_1 + n_fhr_0 + n_fhr_2);

または

fhr_1 = n_fhr_1 / ((double)n_fhr_1 + n_fhr_0 + n_fhr_2);

msdnで除算規則の詳細を読むことができます。

于 2012-11-28T23:10:02.087 に答える
5
double fhr_1; 
        int n_fhr_1 = 9;
        int n_fhr_0 = 15;
        int n_fhr_2 = 6;

        fhr_1 = (double)n_fhr_1/(n_fhr_1 + n_fhr_0 + n_fhr_2);

オペランドの 1 つを double にキャストする必要があります。これにより、double として計算されます。

于 2012-11-28T23:10:23.390 に答える
2

単純に整数を分割することはできません。丸めのために 0 になります。代わりに試してください:

fhr_1 = ((double)(n_fhr_1))/(n_fhr_1 + n_fhr_0 + n_fhr_2);
于 2012-11-28T23:10:39.590 に答える