我正在研究一个货币转换器android应用程序,我试图将double与另一个double值相乘,但在乘以后我得不到正确的值。我也试过BigDecimal但仍然没有得到正确的金额。什么是倍增双打的最佳方式?
second_amount = Double.parseDouble(second.getText().toString());
first_amount = Double.parseDouble(first.getText().toString());
result = first_amount * second_amount;
second.setText("" + df.format(result));
使用BigDecimal后
second_amount = Double.parseDouble();
bdf = new BigDecimal(second.getText().toString());
//first_amount = Double.parseDouble(first.getText().toString());
bds = new BigDecimal(second.getText().toString());
BigDecimal bdr = bdf.multiply(bds);
//result = first_amount * second_amount;
second.setText("" + bdr);
答案 0 :(得分:3)
如果你正在做类似货币计算的事情,那么短小数部分的确切表示很重要,最好不要涉及双重。将数字的原始字符串表示形式直接传递给BigDecimal构造函数,并在BigDecimal中进行算术运算。
例如,new BigDecimal("0.1")
的值为0.1,但new BigDecimal(0.1)
的值略有不同0.1000000000000000055511151231257827021181583404541015625,原因是将文字转换为double的四舍五入。