0

total在这种情况下是 500。试图制作一个计算器,但并不是所有的东西都加起来。它似乎跳过了乘法,只显示total*amount。有什么我做错了吗?编辑:折扣:在示例中为 0.92。如果金额是 1000,我得到 455000。

 if (wShipping==true){

  if (GroundShipping.isSelected()){
       if (amount<=99) {
          shipping=1.05;
          output.setText(output.getText() + amount + "\t" + total*1.05*amount*discount + "\n");
       }
       else{

     output.setText(output.getText() + amount + "\t" + total*amount*discount + "\n");
       }
  }
  if (AirShipping.isSelected()){
      shipping=1.1;
      output.setText(output.getText() + amount + "\t" + total*amount*1.1*discount + "\n");
  } 
  if (FedexShipping.isSelected()){
       shipping=1.25;
      output.setText(output.getText() + amount + "\t" + (total*amount*discount)*(1.25) + "\n");
  } 
}
4

2 回答 2

0

也许,只是也许是货币计算的第一条规则:

为什么不用双精度或浮点数来表示货币

于 2013-10-30T17:21:33.457 回答
0

你应该考虑以下几点——

1)如果直接使用set语句中的值,为什么需要变量shipping

2)使用else if语句,因为所有选项都是独占的

3) 您可能需要检查变量的初始值和计算价格的公式。取给定的初始值,可能的最低价格是-

Price = 1000*500*0.92 = 460000  (total x amount x discount)

因此,您的初始值一定有问题

于 2013-10-30T17:10:46.297 回答