浮点数的加减乘除
最近在做选股时,遇到了关于浮点数的运算问题,是将2个只有2位小数的数字进行相加运算之后,也只保留2位小数,但在使用toFixed(2),Math.floor(15.7784514000 * 100) / 100 等方法后还是不能将他转为只有2位小数的
当我输入32.32+88.88 得到的是 121.19999... 而不是121.2,这是浮点数运算的结果,然后再用toFixed(2)保留2位小数还是不行
1.当相加的两个小数已经是保留2位小数的数,相加之后的数是由浮点数运算而成的,直接用toFixed()方法保留2位小数时就不管用了
解决办法:将运算后的结果转为字符串,截取小数点后2位数,但是这样得到的结果不精确,因为这里是进行相加运算,所以得到的数肯定是保留2位小数的,所以我是将相加的两个数转为整数(乘以100),进行相加运算之后再将得到的数除以100,就得到了2位小数的数;
如果是其他运算得到的小数可以用转为字符串的方法保留3位小数,再四舍五入转为2位
2.如果相加的2个数就是多位小数的,可以在输入时使用正则限制只能保留2位小数,或者转为字符串限制保留2位小数
1).使用字符串保留2位小数的方法: function deal(num){ var num = num+ ""; var num1 = num*substring(0,num.indexOf(".")+3) num = num1*1 return num } num.indexOf(".") 就是获取小数点的index(索引),然后用substring()方法截取小数点索引后2位
2).第二种是使用正则
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))
其他保留2位小数的方法: //功能:将浮点数四舍五入,取小数点后2位 function toDecimal(x) { var f = parseFloat(x); if (isNaN(f)) { return; } f = Math.round(x*100)/100; return f; } //制保留2位小数,如:2,会在2后面补上00.即2.00 function toDecimal2(x) { var f = parseFloat(x); if (isNaN(f)) { return false; } var f = Math.round(x*100)/100; var s = f.toString(); var rs = s.indexOf('.'); if (rs < 0) { rs = s.length; s += '.'; } while (s.length <= rs + 2) { s += '0'; } return s; }
其他方法:
//四舍五入
alert("保留2位小数:" + fomatFloat(3.14559267, 2));
alert("保留1位小数:" + fomatFloat(3.15159267, 1));//五舍六入
alert("保留2位小数:" + 1000.003.toFixed(2)); alert("保留1位小数:" + 1000.08.toFixed(1)); alert("保留1位小数:" + 1000.04.toFixed(1)); alert("保留1位小数:" + 1000.05.toFixed(1));//科学计数
alert(3.1465.toExponential(2)); //3.15e+0
alert(3.1665.toExponential(1)); // 3.2e+0//精确到n位,不含n位
alert("精确到小数点第2位" + 3.1415.toPrecision(2)); //3.1 alert("精确到小数点第3位" + 3.1465.toPrecision(3)); //3.15其他处理数据的方法:
1.丢弃小数部分,保留整数部分
parseInt(5/2)
2.向上取整,有小数就整数部分加1
Math.ceil(5/2)
3,四舍五入.
Math.round(5/2)
4,向下取整
Math.floor(5/2)
另类的方法
<script type="text/javascript"> onload = function(){ var a = "23.456322"; var aNew; var re = /([0-9]+.[0-9]{2})[0-9]*/; aNew = a.replace(re,"$1"); alert(aNew); } </script> <script> var num=22.127456; alert( Math.round(num*100)/100); </script> js强制保留2位,不足两位补零 function changeTwoDecimal_f(x) { var f_x = parseFloat(x); if (isNaN(f_x)) { alert('function:changeTwoDecimal->parameter error'); return false; } var f_x = Math.round(x * 100) / 100; var s_x = f_x.toString(); var pos_decimal = s_x.indexOf('.'); if (pos_decimal < 0) { pos_decimal = s_x.length; s_x += '.'; } while (s_x.length <= pos_decimal + 2) { s_x += '0'; } return s_x; }
浮点数转为整数的方法:
parseInt() , Math.floor与Math.ceil
加油!

浙公网安备 33010602011771号