现在我开始更新这个没有多少人看的博客。算是有一次开始吧。
这篇的内容应该不太专业,尽情吐槽,是我的博客能多点人气儿。
正题:
正在做一个彩票的app。其中会有金钱的输入框。而输入的内容限制为整数或小数,小数部分最多保留两位。而金额在提交到服务器的时候要求的是以输入金钱一百倍的格式提交的。举例:7元---->700 7.1元---->710 7.11元----->711
首先输入框的内容为整数或小数,一般来说为了方便会统一用Double.valueOf(),Float.valueOf()这两个函数处理,然后*100或/0.01。前面的函数部分没发现问题,但是函数处理后的值*100或/100有时候会出先偏差。原因不太了解。昨天测试用一个很特别的数字检验出了这个bug。73.6。然后我用了其他的数值实验了一下,发现这还不是数值界限的问题。最后很无奈。自己写了一个把输入框内容自动转换为100倍数字的函数。
这里主要分享了这个奇葩的bug,下面贴出自己写的很简单的函数。
public int switchInputWithdraw(String input){//转换提现金额使其符合协议格式33.3元-->3330;33.45-->3345;33-->3300 int outPut=0; if(input.contains(".")){ int p=input.indexOf("."); String bPoint=input.substring(p+1); if(bPoint.length()==1){ input=input.replace(".",""); input=input+"0"; } else{ input=input.replace(".",""); } } else{ input=input+"00"; } outPut=Integer.parseInt(input); return outPut; }