我在教自己BigDecimal,希望能有一个批评。在下面的代码片段中,我从用户输入计算提示: check百分比(输入为整数):
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:
scheck = new DecimalFormat("####.00").format(bdcheck.doubleValue());
scheck = StringUtils.leftPad(scheck,7," "); 谢谢你的意见。
发布于 2012-05-28 06:11:24
对于这样简单的计算,用于bdtip和bdtotal变量的逻辑并不是直接向前的。与其使用其中一个操作数的值创建它,然后将其乘以/添加到另一个操作数,不如执行以下操作数:
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);发布于 2012-05-28 09:47:41
new BigDecimal("100")可能是一个常数。DecimalFormat.format(Object number, StringBuffer toAppendTo, FieldPosition pos)接受BigDecimal对象(不需要将其转换为double并失去精度)。https://codereview.stackexchange.com/questions/12108
复制相似问题