服务端返回如下数据并生成一个 product 对象,字段类型是 BigDecimal
{
"price1": 100,
"price2": 99.99,
"price3": 99.5
}
要在客户端显示出来的时候碰到下面的问题
1.如果在 strings.xml 做如下定义
<string name="data_price">¥%1$.2f</string>
界面上三个字段会显示成 ¥100.00 ,¥99.99 ,¥99.50
2.如果在 strings.xml 做如下定义
<string name="data_price">¥%1$s</string>
界面在 debug 下打包是预期的结果,然而在 release 下打包会变成 2 的情况
3.使用格式化工具
val format = DecimalFormat("0.##")
这样符合预期结果,但是代码中有几百处需要修改
想问问各位大佬,有没有更优雅的解决方案?造成 2 的原因是什么?
1
NathanDo 2020-01-17 16:30:59 +08:00
在 Bean 的 Getter 中 format
|
2
chendy 2020-01-17 16:35:19 +08:00
让接口直接返回字符串…
|
3
vanillaxxx OP |
4
chendy 2020-01-17 16:47:41 +08:00
@parorisim 不清楚你用的 json 库是什么,但是一般的 json 库都应该支持用字符串 序列化 /反序列化 BigDecimal 吧
|
5
x537196 2020-01-17 16:49:10 +08:00
涉及到价格的都是用的多少分=。=
{ "price1": 10000, "price2": 9999, "price3": 9950 } |
6
vanillaxxx OP @chendy #4 可能我没描述清楚,服务端返回没什么问题,我这边反序列化成 BigDecimal 也没有问题,奇怪的就是 debug 下它显示是预期中的结果,release 就不合适了,所以我在考虑要不要去魔改 BigDecimal 的 toString 方法
|
7
vanillaxxx OP @x537196 #5 我们当时没有用分是考虑到客户端拿过来还得除个 100 嫌麻烦,数据库里面倒是分
|
8
execute 2020-01-17 17:29:25 +08:00
java.math.BigDecimal.stripTrailingZeros()
|
9
Pythondr 2020-01-18 10:35:37 +08:00
后段处理好返回指定位数的字符串
|