首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算销售佣金和折扣后的价格

计算销售佣金和折扣后的价格
EN

Code Review用户
提问于 2013-03-11 23:07:22
回答 2查看 7.4K关注 0票数 1

代码已经起作用了,但是我只想要一些改进的提示。

代码语言:javascript
复制
import javax.swing.JOptionPane;
import java.text.DecimalFormat;
public class Calculator
{
    public static void main(String[] args)
    {
        double initialPrice = 0.00;
        double commissionRate = 0;
        double discountRate = 0;
        initialPrice = Double.parseDouble(JOptionPane.showInputDialog(null, "What is the initial price total of the sale?"));
        commissionRate = Double.parseDouble(JOptionPane.showInputDialog(null, "What is the percentage amount of the sales commission? \nFor example for 20%, type 20."));
        discountRate = Double.parseDouble(JOptionPane.showInputDialog(null, "What is the customer's discount rate? \nFor example for a 15% discount, type 15."));
        JOptionPane.showMessageDialog(null, "The final cost to the customer is \n$" + computeFinalPrice(initialPrice, commissionRate, discountRate) + ".");
    }
    public static String computeFinalPrice (double initialPrice, double commissionRate, double discountRate)
    {
        double finalPrice;
        DecimalFormat d = new DecimalFormat("0.00");
        finalPrice = (initialPrice*(commissionRate+100)*.01)*((100-discountRate)*.01);      
        return (d.format(finalPrice));
    }
EN

回答 2

Code Review用户

回答已采纳

发布于 2013-03-11 23:23:33

有趣的是,请考虑以下几点:

  • 对于额外的DRYness,您可以创建一个助手函数来获得一个双私有的双getDouble( String )
  • computeFinalPrice可能应该是私有的
  • 如果您希望computeFinalPrice可重用,那么返回一个double并使其公开可能更有意义。
  • 一家公司可能宁愿计算折扣后的佣金,否则销售人员会对提供99%的折扣感到非常兴奋;)
  • 您可以用main()这样的零初始化双数,也可以在computeFinalPrice中不喜欢。
  • 正如另一位评论员所提到的,考虑长而不是双倍,因为双倍可能存在舍入问题。
  • 我会将(initialPrice*(commissionRate+100)*.01)*((100-discountRate)*.01);= finalPrice写成finalPrice = initialPrice\*(commissionRate+100)\*.01\*(100-discountRate)\*.01;,如果我想搅乱代码审查员,我甚至可能会写finalPrice = initialPrice\*(commissionRate+100)\*(100-discountRate)\*.0001;
票数 1
EN

Code Review用户

发布于 2013-03-12 00:58:06

请注意:不要在需要精确结果的地方使用浮点变量:

幸运的是,Java有BigDecimal

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/23756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档