int total=0, number=0;
float percentage=0.0;
percentage=(number/total)*100;
printf("%.2f",percentage);
Numberの値が50で、totalが100の場合、パーセンテージで50.00を取得する必要があります。少なくともそれが必要です。しかし、答えとして0.00を取得し続け、タイプにも多くの変更を試みましたが、役に立ちませんでした。
整数除算は切り捨てられるため、(50/100)
は0になります。float
(より良いdouble
)にキャストするか、100.0
(double
精度、100.0f
for float
precision)first、
double percentage;
// ...
percentage = 100.0*number/total;
// percentage = (double)number/total * 100;
または
float percentage;
// ...
percentage = (float)number/total * 100;
// percentage = 100.0f*number/total;
浮動小数点演算は連想的ではないため、100.0*number/total
と(double)number/total * 100
の結果はわずかに異なる場合があります(float
についても同じです)が、その後の最初の2つの場所に影響を与える可能性は非常に低いです小数点なので、おそらくどちらを選択しても問題ありません。
cでの整数除算は結果を切り捨てるので、50/100
は0
希望する結果を取得したい場合は、これを試してください:
((float)number/total)*100
または
50.0/100
いいえ、整数を使用して式を実行するため、integer 50をinteger 100で除算し、その結果integer 0になります。それらの1つをfloat
にキャストすると、動作するはずです。
浮動小数点が必要な場合は、定期的に1.0を乗算します。規則を覚えるよりも簡単です。
整数演算をしているので、結果は正しいです。試して
percentage=((double)number/total)*100;
ところで%f
はdouble
ではなくfloat
を想定しています。ここで変換された純粋な運によって、うまく機能します。しかし、一般的には、最近のCでは浮動小数点型としてほとんどdouble
を使用します。
これは動作するはずです2ポイントに丸めます
int a=53214
parseFloat(Math.round(a* 100) / 100).toFixed(2);
コードを次のように変更します。
int total=0, number=0;
float percentage=0.0f;
percentage=((float)number/total)*100f;
printf("%.2f", (double)percentage);
これはあなたに正しい答えを与えることができます
#include <stdio.h>
int main()
{
float total=100, number=50;
float percentage;
percentage=(number/total)*100;
printf("%0.2f",percentage);
return 0;
}
これにより、必要な結果が得られます。
double total = 0;
int number = 0;
float percentage = number / total * 100
printf("%.2f",percentage);
最初のオペランドがdoubleであることに注意してください