在 java web 的日常开发工作中,别告诉我你还没有使用过类似 postman 这样的接口请求测试工具。
我目前 Mac 开发平台使用最多的几个工具就是 Intellij IDEA,postman,Chrome,Sublime 3,Sequel pro,DataGrip。
闲话不多说,进入正题,现在在一家互联网金融公司打杂(写接口,与数据库打交道,CRUD,强业务支撑,复杂的业务逻辑)。提到金融,难免有涉及到金额的时候;既然是金额,小数点后保留两位:这种显示需求不要太多。甚至还有遇到显示小数点后低位的需求。
至于 java 里面怎么实现2位小数,网络资源无数。其中 BigDecimal虽说性能消耗较大,但是在金融行业是比较推崇的数据类型。
下面的input.getSoldPrice() 得到的数据不一定是2位,通过 BigDecimal.setScale()方法即可实现。
new BigDecimal(input.getSoldPrice()).setScale(2, BigDecimal.ROUND_HALF_UP)
写好接口后,然后使用 postman 自测,可以看到下面的第二个数据 price 并不是2位小数。难道 BigDecimal 有问题?持续懵逼中。转而甚至考虑换用其他实现方法去展示2位小数。最终在 postman 的自测页面得不到期望的数据 price=179.00,totalPrice=358.00。要疯。
静下心来,代码调试,然后才发现调试时显示的 price=179.00,没有问题,可是最后在 postman 页面看到的结果却不是带有2位小数,而是一个整数。
妄自菲薄的我,还没有到怀疑一切的地步,接口神器 postman 给我的工作效率也是大幅提升。断断是不敢相信 postman 有什么问题;
无奈之下,把接口的方法换成 GET,使用 Chrome 浏览器,执行同一个请求。
然后发现,这尼玛才是真相:
看到此图,才知道 postman 把小数点后面的数字省略掉,显示为整数。
尼玛,害我浪费2个多小时。