質問

この質問にはすでに答えがあります:

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);
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top