今天遇到Javascript数值运算的坑,说到底,还是用得少啊。得多用多敲代码多遇坑。
先介绍以下三个Javascript number取整运算方法.
Math.floor() |
对一个数退一取整 | 例:10.5 -> 10 |
Math.ceil() | 对一个数进一取整 | 例:10.5 -> 11 |
Math.round() | 对一个数四舍五入取整 | 例:10.5 -> 11 |
以上都是为了得到整数的方法
那么对于我们要对浮点数进行精确小数点运算,并在保留的最后一位小数上取整,请看以下解决方案
利用以上取整的方法,并对Number原型进行扩展,先将数值转换为只有一位小数的整数,取整后再恢复为原来数值。
如“1.234”,保留两位小数,那么我们先转换为“123.4”,再利用取整方法取整后,
进一(“124”),退一(“123”),四舍五入(“123”),再去除以我们要保留位数 即10的2次方 (100),就会变为“1.24”,“1.23”,“1.23”这样子。
//退一,向下 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); }