0

コードを検討してください:

public double calculatePrice()
    { 
      int discount = 0 ;
      double totalPrice=itemCount*itemPrice;
      double netPrice;
      for(int i=0;i<NOOFITEMS.length;i++)
      {
        /*  if(i==0)
          {
              if(itemCount<NOOFITEMS[i])
               { discount=0;
                 break;
               }
          }
          /*if(i==NOOFITEMS.length-1)
          {  
        if(itemCount>NOOFITEMS[i])
           {  discount=50;
             break;
           }
          }
          if(itemCount<NOOFITEMS[i]&&itemCount>NOOFITEMS[i+1])
          {
            discount=DISCOUNTPERCENTAGE[i];  
          }*/
          discount=10;
      }
     System.out.println("discount "
             +discount);  
     System.out.println("totalprice "
             +totalPrice); 
      netPrice=totalPrice-(totalPrice*(discount/100));
      return netPrice;
    }

出力::

Bill  ID:   501
Item NAME: grocery
 NO of Item: 11
 Price of Item: 250.0
discount 10
totalprice 2750.0
net price          2750.0
TRAINEE ID:   502
TRAINEE NAME: fruits
 Price of Item: 300.0
Item NO: 15
discount 10
totalprice 4500.0
net price         4500.0

の値は、指定されたステートメントのとおりである"netprice"必要があります。4050 [4500-(4500*(10/100)] ただし、値は通常どおり出力されます。は正しく計算されません4500。常にdiscount/100小数部は無視されます。エラーを理解できません..!

4

4 に答える 4

3

犯人は次のとおりです。

totalPrice*(discount/100)

discountは int なのでdiscount/100、整数の除算であり、小数は切り捨てられます。たとえば、10/1000 です。

この問題を解決するには、double の使用を強制できます。

totalPrice*(discount/100d)
于 2013-01-12T18:25:50.267 に答える
3

割引/100 は整数除算です。割引が 100 未満の場合、これは常に 0 になります。

もっといい答えを出したい。私のJavaクラスのいくつかでこの問題を割り当てる教授として、コーディングエラーを見つける方法...

期待どおりに動作しないコードがある場合。ブレーク ポイントを設定し、コードのすべての行の動作を監視します。面倒に聞こえますが、速くなります。

予期しないことをしている行を見つけたら、その行を注意深く見てください。場合によってはまだそれが見えることがあるため、線を細かく分割する必要があります。この場合、複数のステップで計算を行うことができます。

temp = 割引 / 100;

次に、長い式で temp を使用します。これは、他の人に助けを求めるよりもデバッグに適した方法です。より速く学習し、自信を持ってプログラマーになることができます。

于 2013-01-12T18:26:40.627 に答える
1

型で作業していてdouble、出力も同じにしたい場合はdouble、すべての変数をdoubleの代わりにしintます。を操作intすると結果が得られintます。intこれを double に変更しても、すべての数値も数値であるため、問題は発生しませんdouble

たとえば、変数「discount」を double に変更します。

double discount = 0;

また、100 で除算を行っていますが、これも int です。これも double に変更します。

netPrice = totalPrice - (totalPrice * (discount / 100d));

または、より安全な操作を行うには、すべての数値に変数を定義して、それらをより明確に表示します。

double divider = 100;
netPrice = totalPrice - (totalPrice * (discount / divider));
于 2013-01-12T18:34:31.717 に答える
0

これを試して:

netPrice=totalPrice-(totalPrice*(discount/100.));

整数演算を使用しました。

于 2013-01-12T18:26:33.143 に答える