概述
今天碰到了一个我之前从来都没有认为会是问题的问题,就是小数精确度问题,像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)这就是对去到的数值进行精确到小数点之后的两位,果然是简单了很多啊
(但是这里请注意,如果小数点后不足两位的,它也不会去补足两位有效数字,只会保留当前数值)
虽然写的比较啰嗦,是因为在家里已经记不清当时的代码了,只能写个大概,但今天那段经历让我记忆颇深,记录一下
最后
以上就是调皮百合为你收集整理的JAVA开发中的那些事(7)-------关于小数精确度的全部内容,希望文章能够帮你解决JAVA开发中的那些事(7)-------关于小数精确度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复