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 位小数的主要内容,如果未能解决你的问题,请参考以下文章