JAVA开发中的那些事(7)-------关于小数精确度

今天碰到了一个我之前从来都没有认为会是问题的问题,就是小数精确度问题,像1.0保留一位有效数字、0.99两位有效数字

单纯碰到这个问题的时候,我首先反应过来的是最笨的方法,小数点之后保留两位有效数字,于是获取小数点的位置,然后对小数点后的字符串进行判定,超过2位则截取;

这是最繁琐,也最基本的方法了。后来又发现了Math.round(),就感觉一般问题都可以解决掉了,可是今天的项目中让我在不同的条件下,却用了另外两种不同的方法,觉得有必要记录下:


1、easyUI中获取的json显示

sql语句为:select sum(plantArea)/sum(totalArea) from btfPart where time=2014 group by grower;大体是这么个意思,我需要获取的是种植面积的比例然后传递json,我突然发现就没法去判断,也没法去修改了啊,当时就懵了,这该如何是好?

查阅API后发现了formatter才算是解决了

{field:'text',width:1000,formatter:'changeNum'}

然后在脚本域加入function changeNum(value,row,index){return parseFloat(value).toFixed(2);}即可

注意点:

a、formatter后跟的是js方法;

b、js方法不要忘记写参数,easyUI中已经将参数封装进去了,对value进行处理即可;

c、json传过来的都是String的数据类型,需要转换成浮点型进行处理;

d、toFixed()是对指定位数之后的小数进行四舍五入的;

这个方法的出现当时让我解决一大问题,然后很顺利的就写完了,但是另一个问题却随之而来


2、导出获取到的数据信息中我们不需要json进行传递了,但是挨个去写也比较麻烦,于是我就在想办法,最后朋友告诉我了一个极为简单的方法,就是对sql进行规范,这就用到了SQL的round()函数,于是这样修改了sql语句

select round(sum(plantArea)/sum(totalArea),2)这就是对去到的数值进行精确到小数点之后的两位,果然是简单了很多啊

(但是这里请注意,如果小数点后不足两位的,它也不会去补足两位有效数字,只会保留当前数值)


虽然写的比较啰嗦,是因为在家里已经记不清当时的代码了,只能写个大概,但今天那段经历让我记忆颇深,记录一下


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值