Android:BigDecimal 始终显示最多 2 位小数

Posted

技术标签:

【中文标题】Android:BigDecimal 始终显示最多 2 位小数【英文标题】:Android: BigDecimal always show number up to 2 decimal places 【发布时间】:2012-12-26 14:39:52 【问题描述】:
String TotalAmount= "";

假设我有 TotalAmount = 10, or 10.1 or 10.11 or 10.11111

BigDecimal Amount = new BigDecimal(amount);

我想要Amount这种模式#.##

10 -> 10.00
10.1 -> 10.10
10.11 -> 10.11
10.11111 -> 10.11

【问题讨论】:

【参考方案1】:

你可以试试java.text.NumberFormat,

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
String res = nf.format(Amount);
System.out.println(res);

【讨论】:

出现错误 12-26 19:57:02.357: E/androidRuntime(15870): 致命异常: main 12-26 19:57:02.357: E/AndroidRuntime(15870): java.lang。 IllegalArgumentException 12-26 19:57:02.357: E/AndroidRuntime(15870): 在 java.text.NumberFormat.format(NumberFormat.java:313) 12-26 19:57:02.357: E/AndroidRuntime(15870): 在 java .text.DecimalFormat.format(DecimalFormat.java:732) 12-26 19:57:02.357: E/AndroidRuntime(15870): at java.text.Format.format(Format.java:133) 金额应该是 BigDecimal 而不是字符串 现在您的代码正在运行,但问题是 BigDecimal 没有显示“.00”部分,导致问题未解决 @SyedZahidAli 我用 BigDecimal 尝试了所有 4 个输入:10、10.1、10.11、10.111,它只返回所需的结果。我不明白'BigDecimal 没有显示“.00”'【参考方案2】:

自己解决了

BigDecimal TotalAmount= new BigDecimal(myAmount);
BigDecimal Amount = TotalAmount.divide(new BigDecimal(1),2, RoundingMode.HALF_UP);

【讨论】:

【参考方案3】:

您可以使用DecimalFormat(类似于 NumberFormat 但使用 BigDecimal)

【讨论】:

以上是关于Android:BigDecimal 始终显示最多 2 位小数的主要内容,如果未能解决你的问题,请参考以下文章

BigDecimal提供了8种舍入方式

将 BigDecimal 格式化为最多 2 个十进制数字的字符串,在小数部分删除 0

Java计算器,BigDecimal显示[重复]

始终在 Android 中显示地图标记标题

按钮始终显示在 FrameLayout 的顶部

Android:在recyclerview下方显示按钮,但始终在屏幕上