dポイントプレゼントキャンペーン実施中!

C言語でプログラミングを書いています。
10問の問題の正解数に応じて正答率を出すプログラムを書いているのですが、正解数を数えるものをintで定義(seikaiとする)し、正答率の計算結果を出すものをdoubleで定義(rituとする)しました。
seikaiをインクリメントで数え
ritu=seikai/10*100
という計算をしました。このrituを%fで表示させようとしても正しく表示されません。intで定義したものを計算に用いて、その計算結果をdoubleで定義したもので表示することはできないのですか??
また、自分で調べたら、ritu=(double)seikai/10*100とやるというものがありましたが、”(double)”を使わずに計算を反映させることはできませんか?

A 回答 (6件)

ritu = seikai / 10.0 * 100;


とします。

すると、seikai[int] / 10.0[double]の演算で
seikaiがdoubleにアップキャストされます。
seikai[double] / 10.0[double] の結果(tmpとする)はdouble型。
次に、tmp [double] * 100 [int]となるので、
100がアップキャストされてdouble型となり、
計算結果はdoubleになります。

ritu = seikai / 10 * 100.0
では所望の結果が得られないこと
を確認すると良いでしょう。
    • good
    • 0

> ”(double)”を使わずに



なぜそうしたいのかが、今一つ見えないです。
とにかく、所望の結果を得ればよいのですよね?
    • good
    • 0

ritu = seikai;


ritu /= 10;
rttu *= 100;

とか。
    • good
    • 0

10.0f は float 型だと思う。

    • good
    • 0

Googleかなにかで、「キャスト」という言葉を調べてみましょう。


キャストすればできます。

> ”(double)”を使わずに計算を反映させることはできませんか?

ritu = (seikai / 10.0f) * 100;

これなら(double)と書かなくても、10.0f がdouble扱いなので int / double が double になって、Y_a-S_u さんのご希望通りの結果になります。

10.0fの「f」は、「僕は浮動小数点として扱ってね!」という意味です。
    • good
    • 0

少なくとも一方を double にすれば, 割り算の結果は double になります.


つまり, 分子を double にしてもいいし, 分母を double にしてもいいんです.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!