本文是小编针对js保存两位小数这个朋友们时常遇到的经典题目整顿了在种种环境下的函数写法以及遇到题目的阐发,以下是扫数内容:
一、我们起首从经典的“四舍五入”算法讲起
1、四舍五入的环境
var num =2.446242342;
num = num.toFixed(2); // 输出后果为 2.45
2、不四舍五入
第一种,先把小数边整数:
Math.floor(15.7784514000 * 100) / 100 // 输出后果为 15.77
第二种,看成字符串,应用正则般配:
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/)) // 输出后果为 15.77,不行用于整数如 10 必需写为10.0000
周密:要是是负数,请先转换为正数再计较,末了转回负数
再共享一个经典的办理四舍五入题目后js保存两位小数的要领:
//四舍五入保存2位小数(若第二位小数为0,则保存一名小数)
function keepTwoDecimal(num) {
var result = parseFloat(num);
if (isNaN(result)) {
alert('传递参数错误,请搜检!');
return false;
}
result = Math.round(num * 100) / 100;
return result;
}
//四舍五入保存2位小数(不够位数,则用0替补)
function keepTwoDecimalFull(num) {
var result = parseFloat(num);
if (isNaN(result)) {
alert('传递参数错误,请搜检!');
return false;
}
result = Math.round(num * 100) / 100;
var s_x = result.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;
}
二、Js取float型小数点后两位数的要领
<script type="text/javascript">
//保存两位小数
//功效:将浮点数四舍五入,取小数点后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;
}
function fomatFloat(src,pos){
return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);
}
//四舍五入
alert("保存2位小数:" + toDecimal(3.14159267));
alert("强迫保存2位小数:" + toDecimal2(3.14159267));
alert("保存2位小数:" + toDecimal(3.14559267));
alert("强迫保存2位小数:" + toDecimal2(3.15159267));
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.1415.toExponential(2));
alert(3.1455.toExponential(2));
alert(3.1445.toExponential(2));
alert(3.1465.toExponential(2));
alert(3.1665.toExponential(1));
//切确到n位,不含n位
alert("切确到小数点第2位" + 3.1415.toPrecision(2));
alert("切确到小数点第3位" + 3.1465.toPrecision(3));
alert("切确到小数点第2位" + 3.1415.toPrecision(2));
alert("切确到小数点第2位" + 3.1455.toPrecision(2));
alert("切确到小数点第5位" + 3.141592679287.toPrecision(5));
</script>
用Javascript取float型小数点后两位,例22.127456取成22.13,若何做?
1.抛弃小数片面,保存整数片面
2.向上取整,有小数就整数片面加1
3,四舍五入.
4,向下取整
另类的要领
1. 最笨的办法
function get()
{
var s = 22.127456 + "";
var str = s.substring(0,s.indexOf(".") + 3);
alert(str);
}
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>
3. 他就对照聪明了
<script>
var num=22.127456;
alert( Math.round(num*100)/100);
</script>
4.会用新鲜东西的伴侣....... 不过必要 IE5.5+才支持。
5.js保存2位小数(强迫)
对于小数点位数大于2位的,用上头的函数没题目,不过要是小于2位的,好比:changeTwoDecimal(3.1),将回笼3.1,要是你必然必要3.10如许的花样,辣么必要下面的这个函数:
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;
}
三、js保存两位小数,自动增补零
function returnFloat(value){
var value=Math.round(parseFloat(value)*100)/100;
var xsd=value.toString().split(".");
if(xsd.length==1){
value=value.toString()+".00";
return value;
}
if(xsd.length>1){
if(xsd[1].length<2){
value=value.toString()+"0";
}
return value;
}
}
四、JS取整数,js取绝对值,js四舍五入(可保存两位小数)
JS取整数,js取绝对值,js四舍五入(可保存两位小数)函数如下:
<SCRIPT language=javascript>
<!--
function jsMath()
{
document.write(Math.floor(5.80) + "<br>");//取整或下舍入
document.write(Math.round(5.80) + "<br>");//四舍五入,取整数
document.write(Math.round((5.80*100)/100) + "<br>");//四舍五入,保存两位小数
document.write(Math.ceil(5.10) + "<br>");//上舍入
document.write(Math.abs(-5.80) + "<br>");//取绝对值
document.write(Math.max(55,58) + "<br>");//回笼两个值中最大数
document.write(Math.min(55,58) + "<br>");//回笼两个值中最小数
}
-->
</SCRIPT>
<div>
<script>jsMath();</script>
</div>
总结
JS数据花样化是在进行web前端开发时常遇到的工作,特别是在数据范例为Float的数据就必要分外处分,如保存两位小数、小数点后的数据是否必要四舍五入等等。下面就来先容实现数据花样化保存两位小数的多种要领。
1、JS自带的要领toFixed(),toFixed() 要领可把 Number 四舍五入为指定小数位数的数字。
语法:NumberObject.toFixed(num),mun是必需的参数,即划定小数的位数,是 0 ~ 20 之间的值,包孕 0 和 20,有些实现可以支持更大的数值局限。要是不祥了该参数,将用 0 取代,所以toFixed() 要领可以实现保存2位、3位、4位等等,取决于num的数值。
回笼值:回笼 NumberObject 的字符串表示,不接纳指数计数法,小数点后有固定的 num 位数字。要是须要,该数字会被舍入,也能够用 0 补足,以便它到达指定的长度。要是 num 大于 le+21,则该要领只挪用 NumberObject.toString(),回笼接纳指数计数法表示的字符串。
当 num 太小或太大时抛出非常 RangeError。0 ~ 20 之间的值不会激励该非常。有些实现支持更大局限或更小局限内的值。
当挪用该要领的工具不是 Number 时抛出 TypeError 非常。
<script type=”text/javascript”>
var num = new Number(13.376954);
document.write (num.toFixed(2))
</script>
输出:13.38
2、自定义函数实现小数保存并四舍五入。
function roundFun(numberRound,roundDigit) { //四舍五入,保存位数为roundDigit
if (numberRound>=0){
var tempNumber = parseInt((numberRound * Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit);
return tempNumber;
} else{
numberRound1=-numberRound;
var tempNumber = parseInt((numberRound1 * Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit);
return -tempNumber;
}
}
而后挪用roundFun()这个函数就可以了。如roundFun('13.376954′,2);固然回笼的后果跟第一种要领是同样的。
3、通过函数截取,截取到小数点背面第几位,固然这种要领就没有四舍五入了。
<script type=”text/javascript”>
tmp = 13.376954″
result = tmp.substr(0,tmp.indexOf(“.”)+2);
alert(result);
</script>
以上即是小编为朋友们整顿的对于js保存两位小数要领的总结内容,感谢你的支持,要是你对js保存两位小数要领另有任何不清晰的地方,可以在下方的留言区谈论。