首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigDecimal代码批判

BigDecimal代码批判
EN

Code Review用户
提问于 2012-05-27 17:58:17
回答 2查看 1K关注 0票数 3

我在教自己BigDecimal,希望能有一个批评。在下面的代码片段中,我从用户输入计算提示: check百分比(输入为整数):

代码语言:javascript
复制
 txt_check = txtcheck.getText().toString();
 tpercent = txttippct.getText().toString();

 BigDecimal hundred = new BigDecimal("100");
 BigDecimal pct = new BigDecimal(tpercent);

 BigDecimal bdpercent = pct.divide(hundred, 2,BigDecimal.ROUND_UNNECESSARY); 
 BigDecimal bdcheck = new BigDecimal(txt_check);
 BigDecimal bdtip = new BigDecimal(txt_check);
 bdtip = bdtip.multiply(bdpercent);
 BigDecimal bdtotal = new BigDecimal(txt_check);
 bdtotal = bdtotal.add(bdtip);

上面的代码似乎运行正常。要显示这些值,我将转换为string:

代码语言:javascript
复制
 scheck = new DecimalFormat("####.00").format(bdcheck.doubleValue());
 scheck = StringUtils.leftPad(scheck,7," "); 

谢谢你的意见。

EN

回答 2

Code Review用户

发布于 2012-05-28 06:11:24

对于这样简单的计算,用于bdtipbdtotal变量的逻辑并不是直接向前的。与其使用其中一个操作数的值创建它,然后将其乘以/添加到另一个操作数,不如执行以下操作数:

代码语言:javascript
复制
txt_check = txtcheck.getText().toString();
tpercent = txttippct.getText().toString();

BigDecimal hundred = new BigDecimal("100");
BigDecimal pct = new BigDecimal(tpercent);

BigDecimal bdpercent = pct.divide(hundred, 2, BigDecimal.ROUND_UNNECESSARY); 
BigDecimal bdcheck = new BigDecimal(txt_check);

BigDecimal bdtip = bdcheck.mulitply(bdpercent);
BigDecimal bdtotal = bdcheck.add(bdtip);
票数 1
EN

Code Review用户

发布于 2012-05-28 09:47:41

  1. 遵循命名约定可以使代码更易于阅读。参见有效Java,第2版,第56项:遵守普遍接受的命名约定
  2. new BigDecimal("100")可能是一个常数。
  3. DecimalFormat.format(Object number, StringBuffer toAppendTo, FieldPosition pos)接受BigDecimal对象(不需要将其转换为double并失去精度)。
票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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