我是靠谱客的博主 调皮百合,最近开发中收集的这篇文章主要介绍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)这就是对去到的数值进行精确到小数点之后的两位,果然是简单了很多啊

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


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


最后

以上就是调皮百合为你收集整理的JAVA开发中的那些事(7)-------关于小数精确度的全部内容,希望文章能够帮你解决JAVA开发中的那些事(7)-------关于小数精确度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部