需求
在对于数据的处理方面,我们有时候会碰到取整,或者保留两位小数等等。
比如,我们要对'数量'这一列取整,由32.00变成32;
对金额这一列保留两位小数,由32.12463 ...变成32.12;
JSTL表示:
前提:
代码:
关键点在于:maxFractionDigits =“0”,如果你取整的话,这个可以不用写,如果你要保留两位小数的话,这里改成2即可。
注意:JSTL采用的是四舍六入五奇偶的算法,不是四舍五入简单来说就是:五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。
JS表示:
前提:
数字的类型为INT类型或者浮动类型,在这里可以用到的JS的
parseFloat();
parseInt();
方法进行转换,如果不是,可以进行toFixed()方法,不建议采用,存在精度丢失问题
比如:
3.155.toFixed(2) = 3.15
3.1550001.toFixed(2) = 3.16
在这里,可以采用Math()方法;
代码:
//去尾法
Number.prototype.toFloor = function (num) {
return Math.floor(this * Math.pow(10, num)) / Math.pow(10, num);
};
//进一法
Number.prototype.toCeil = function (num) {
return Math.ceil(this * Math.pow(10, num)) / Math.pow(10, num);
};
//四舍五入法
Number.prototype.toRound = function (num) {
return Math.round(this * Math.pow(10, num)) / Math.pow(10, num);
};
注意:此处的xxx.toFixed(X)的方法也不是严格的四舍五入,通过网上的查找,这个方法是有缺陷的,对于精密数字或者重要的数据来讲,不建议使用这个,如果没选择的话,此处的解决办法为:JS中的toFixed()四舍五入方法
Java的的表示:
在这里,我只用了最简单的Java的的最简单粗暴的方法处理保留两位小数的。即采用的是DecimalFormat的方法
代码:
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
注意:此处的方法采用的是四舍五入,经过而且处理之后报道查看值的英文字符串字符串,当然,对于Java的而言,还有其他的处理方法,在这里我就不一一列举了。
sql表示:
是在字段中进行控制,比如
CONVERT (m.num,DECIMAL (20,2)),
格式为:convert(字段名称,decimal(20,2))
其中,decimal(20,2)代表的是:20代表长度,即最大值,最多只能有20个数字;2代表保留的小数位。
注意:如果这是float类型的话,你在业务逻辑中又对他进行的加减计算,他的精度又会丢失,从而没有效果
参考链接:
的java的的的的的保留两位小数4种方法
JS中的toFixed()四舍五入方法