【发布时间】:2011-08-11 06:38:09
【问题描述】:
我正在 android 中构建一个基本的计算器功能。 但是当结果显示在 TextView 中时,我在四舍五入时遇到了小问题。
我正在做 123456789 * 123456789 的乘法运算,得到的结果在我的 TextView 中无法容纳。 此外,在 Android 内置计算器中执行上述操作的实际结果为 1.5241E16。 谁能告诉我如何在我的计算器应用程序中实现这个结果? 下面是关于我正在尝试做的事情的小sn-p:
public static double round(double unrounded, int precision, int roundingMode)
{
BigDecimal bd = new BigDecimal(unrounded);
BigDecimal rounded = bd.setScale(precision, roundingMode);
return rounded.doubleValue();
}
num = num * Double.parseDouble(txtCalc.getText().toString());
num = round(num, 3, BigDecimal.ROUND_HALF_UP); //where 3 is the precision of number
请帮我实现结果 1.5241E16 为 1...9 * 1....9
【问题讨论】:
-
我很困惑,你得到了什么结果?科学记数法确实失去准确性。 1.5241E16 仅仅意味着答案大约是 1.5241*10,000,000,000,000,000,这意味着如果您可以决定要显示多少小数位,您可以将您的数字除以 10^X 并连接结果。
-
是的,同样的,我也只想将结果四舍五入为 1.5241E16。
-
我在下面的答案中添加了代码,可以提供您想要的结果。
标签: java rounding precision bigdecimal