2017-06-13 2 views
2

私はC#を初めて使用していますが、このコードは常に0.00を返します。理由はわかりません。誰でも助けてくれますか? これは、コンソールプログラムで、結果はあなたがdenomが大きく、その分子は、例えばある2つの整数の間の数学的な分裂を行っている120.00C#計算では0が返されます

using System; 

namespace TradeComissions 
{ 
    class TradeComissions 
    { 
     static void Main(string[] args) 
     { 
      var town = Console.ReadLine().ToLower(); 
      var amount = double.Parse(Console.ReadLine()); 
      double result = 0.0; 

      if(town == "sofia") 
      { 
       if (amount >= 0 && amount <= 500) 
       {     
        result = amount * (5/100);  
       } 
       else if (amount >= 500 && amount <= 1000) 
       {   
        result = amount * (7/100);  
       } 
       else if (amount >= 1000 && amount <= 10000) 
       {  
        result = amount * (8/100);  
       } 
       else if (amount > 10000) 
       {       
        result = amount * (12/100); 
       } 
      } 

      Console.WriteLine("{0:f2}", result); 
     } 
    } 
} 
+8

ヒント: '(5/100)'ゼロです。 '(5.0/100)'は '0.05 'です。 – dasblinkenlight

+3

あなたのすべての部門は、整数演算で行われています... –

+1

整数としてマークされているので、 '8/100 = 0'は' 8.0/100'または '8/100.0'を使用してdouble計算であることを確認します – Icepickle

答えて

2

する必要があります可能な入力は

sofia 
1500 

です5/100、整数すぎる(ゼロ)にその演算結果、代わりに行う:

result = amount * (5.0/100); 
+0

重複したマーキングが、あなたの応答を妨げないのはなぜですか? – Icepickle

+0

hummmなんて奇妙なんですが、3分前に閉じてしまったのですが、私の答えは1分後に閉まりました.... –

+0

ええ、それで私の質問:)それは既知の[バグ]ですよね。(https://meta.stackoverflow.com/質問/ 252711/this-answer-was-the-question-was-that-possible):) – Icepickle

0
//This will work 

static void Main(string[] args) 
     { 
      var town = Console.ReadLine().ToLower(); 
      var amount = double.Parse(Console.ReadLine()); 
      double result = 0.0; 

      if (town == "sofia") 
      { 
       if (amount >= 0 && amount <= 500) 
       { 
        result = amount * (0.05); 
       } 
       else if (amount >= 500 && amount <= 1000) 
       { 
        result = amount * (0.07); 
       } 
       else if (amount >= 1000 && amount <= 10000) 
       { 
        result = amount * (0.08); 
       } 
       else if (amount > 10000) 
       { 
        result = amount * (0.12); 
       } 
      } 
      double f = result; 

      Console.WriteLine("{0:f2}", result); 
      Console.ReadKey(); 
     } 
関連する問題