アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++初心者です。簡単なスコア計算のプログラムのはずなのに…。

練習として、サドンアタックというFPSゲームの、自分のスコア(KD)を計算するプログラムを作ろうという件について質問させていただきます。

スコア(KD)の計算式は、
倒した数/(倒した数+倒された数)*100 です。

以下が、私が書いたプログラムです。

--------------------

#include<stdio.h>

int main(void)

{
int k , d , kd ;

printf("キル数を入力:");
scanf("%d",&k); //K=倒した数

printf("デス数を入力:");
scanf("%d",&d); //D=倒された数

kd = k / ( k + d ) * 100 ; //計算式

printf("KDは%fです。\n", kd);

return(0);
}
--------------------
*実行結果*

KDは0.000000です。
--------------------

添付した画像の通り、k=5,D=5で、計算するとKDは50.000000となるはずなのですが、何故か0.000000になってしまうのですが、どこがおかしいのでしょうか?ご指摘お願いします。

「C++初心者です。簡単なスコア計算のプロ」の質問画像

A 回答 (2件)

KDをfloat型にする。


int k , d;
float kd ;

計算するときに、float型にキャストする
kd = (float)k / ( k + d ) * 100

k / ( k + d )
を計算した段階で、int型に丸められるので答えは0になります。
    • good
    • 0
この回答へのお礼

int型では、小数は使えない ということですね。

無事、正しい値を出すことが出来ました。
ありがとうございます。

お礼日時:2010/07/10 16:06

int型 / int型 の結果はint型である



7 / 5 = 1

double型 / double型やそれに変換される場合はdouble型が帰る
(double)7 / 5 = 1.4 → double / int → double / double

http://ideone.com/dnIJC
    • good
    • 0
この回答へのお礼

浮動小数点型を使用するということですね。
ありがとうございます。

お礼日時:2010/07/10 16:08

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