2016-05-05 8 views
1
#include<iostream> 
#include<conio.h> 
using namespace std; 
int main() 
{ 
    int amount; 
    int discount; 
    cout<<"please enter amount : "; 
    cin>>amount; 

    discount = amount*(10/100); 
    cout<<"the discount amount is"<<discount<<endl; 
    system("PAUSE"); 
} 

私は単純な数式がint amount変数で計算されていますが、与えられていない単純なC++プログラムを書いています。必要な答えは0を与えるが、コードは正しいと思う。ユーザ入力のパーセンテージの計算に関する簡単なC++プログラム

+1

デバッグしましたか? – Alex

答えて

1

10/100は、整数除算であり、結果は0となります。したがって、ゼロを再び掛けてゼロを乗じます。

編集:あなたはJavaScriptやPythonのような動的言語から来る場合

が、彼らはしばしば、すべてに対する暗黙の二重の変数を使用し、したがって、これはあなたの期待値を与えるだろう。 C++はより強力な型システムを持っているので、整数除算は常に別の整数を生成します。あなたは浮動小数点値の分割を望んでいた場合は、浮動小数点リテラルを使用する必要があります(またはキャストが、この場合にはそれは必要はありません):

discount = amount * 10.0/100.0; 

または、floatはあなたのために十分な精度である場合:

discount = amount * 10.0f/100.0f; 
+0

+1浮動小数点演算は、10進数が関係する一般的な場合に移動する方法です。あるいは、単純な計算のために整数演算を使うこともできますが、括弧をスキップして、整数量が必要な値になるようにします: 'discount = amount * 10/100;'。 –

+0

大変ありがとうございます。私は大きなプログラムを持っているとダブルデータ型を使って実際に8バイトを取ってくれてありがとうございます。これは私のprogをゆっくりと大きくして、量や年齢などの値にも使えます。私のプログラムを速く走らせるために、intとshortを使うことができないのはなぜですか?しかし、この場合intとshortが処理できる値は小さすぎます。 –

+0

@Raheel StjepanがC++整数演算で言ったことは、「10/100」は0に等しいということです。整数を使用することを禁じる人はいません。整数算術演算では '10/100'が0に等しいことを考慮してください。 –

関連する問題