js保留两位小数方法总结
本文是一个小系列。针对经典的js保留两位小数的问题,我们对各种情况下的函数编写方法进行了梳理,并对遇到的问题进行了分析。以下是全部内容:
1、 让我们从经典的“舍入”算法开始
一,。四舍五入
var num=2.446242342;
num=num.tofixed(2);//输出为2.45
二,。不舍入
第一种方法是将十进制边设置为整数:
数学地板(15.7784514000*100)/100/输出为15.77
其次,作为字符串,使用常规匹配:
编号(15.7784514000.tostring()。匹配(/^\d+(?;:\。\d{0,2})和#63;/)//输出结果为15.77,不能用作整数。例如,10必须写为10.0000
注:如果是负数,请在计算前将其转换为正数,最后返回负数
分享另一种解决舍入问题的经典方法,js保留两位小数:
//四舍五入时保留两位小数(如果第二位小数为0,则保留一位小数)
函数keeptwodecimal(num){
var result=parsefloat(num);
如果(isnan(结果)){
警报('传递参数时出错,请检查!');
返回false;
}
结果=数学。四舍五入(num*100)/100;
返回结果;
}
//四舍五入保留2位小数(不足时以0为准)
函数keeptwodecimalfull(num){
var result=parsefloat(num);
如果(isnan(结果)){
警报('传递参数时出错,请检查!');
返回false;
}
结果=数学。四舍五入(num*100)/100;
var s_x=结果。tostring();
var pos_uu'decimal=s_ux.indexof('.');
如果(位置小数<;0){
pos_uu十进制=s_ux.长度;
s_x+=';
}
while(s_x.length<;=pos_decimal+2){
s_x+='0';
}
返回s_x;
}
如果您想对javascript进行系统深入的研究,可以参考经典书籍《javascript启示录》pdf原著
2、 浮点型小数点后取两位数的js方法
<;script type=“text/javascript”>;
//保留两位小数
//函数:将浮点数四舍五入到小数点后2位
函数todecimal(x){
var f=parsefloat(x);
if(isnan(f)){
回来
}
f=数学。圆形(x*100)/100;
返回f;
}
//系统保留两位小数。例如,如果2,则在2之后添加00,即2.00
函数todecimal2(x){
var f=parsefloat(x);
if(isnan(f)){
返回false;
}
var f=数学。圆形(x*100)/100;
var s=f.tostring();
var-rs=s.indexof('.');
如果(rs<;0){
rs=s.长度;
s+=';
}
而(s.length<;=rs+2){
s+='0';
}
返回s;
}
函数fomatfloat(src,pos){
返回数学。四舍五入(src*math.pow(10,pos))/math。战俘(10人,职位);
}
//四舍五入
警告(“保留两位小数:+todecimal(3.14159267));
警报(“强制保留小数点后两位:+todecimal2(3.14159267));
警报(“保留两位小数:+todecimal(3.14559267));
警报(“强制保留小数点后两位:+todecimal2(3.15159267));
警报(“保留两位小数:+fomatfloat(3.14559267,2));
警报(“保留1位小数:+fomatfloat(3.15159267,1));
//四舍五入
警报(“保留两位小数:+1000.003.tofixed(2));
警报(“保留小数点后1位:+1000.08.tofixed(1));
警报(“保留小数点后1位:+1000.04.tofixed(1));
警报(“保留小数点后1位:+1000.05.tofixed(1));
//科学计数
警报(3.1415.toexponential(2));
警报(3.1455.toexponential(2));
警报(3.1445.toexponential(2));
警报(3.1465.toexponential(2));
警觉(3.1665.toexponential(1));
//精确到n位,不包括n位
警报(“精确到小数点后第二位”+3.1415.顶部接收(2));
警报(“精确到小数点后第三位”+3.1465.3);
警报(“精确到小数点后第二位”+3.1415.顶部接收(2));
警报(“精确到小数点后第二位”+3.1455.顶部接收(2));
警报(“精确到小数点后第5位”+3.141592679287.顶部接收(5));
<;/脚本>;
使用javascript获取浮点小数点后的两位数字。例如,22.127456被视为22.13。怎么做?
1.放弃小数部分,保留整数部分
parseint(5/2)
2.总结。如果有小数,则在整数部分加1
数学ceil(5/2)
3.四舍五入
数学圆形(5/2)
4.四舍五入
数学楼层(5/2)
替代方法
1.最愚蠢的方法
函数get()
{
var s=22.127456+“”;
var str=s.substring(0,s.indexof(“.”)+3);
警报(str);
}
2.正则表达式运行良好
<;script type=“text/javascript”>;
onload=函数(){
var a=“23.456322”;
风险值重新计算;
变量re=/([0-9]+[0-9]{2})[0-9]*/;
重新=a.替换(重“$1”);
警惕(重新);
}
<;/脚本>;
他更聪明
<;脚本>;
var num=22.127456;
警报(数学轮数(num*100)/100);
<;/脚本>;
4.可以使用新事物但支持ie5+的朋友。
5.2保留小数点后两位(必填)
对于小数位数大于2位的,可以使用上述函数,但对于小数位数小于2位的,如changetwodecimal(3.1),将返回3.1。如果需要3.10的格式,则需要以下功能:
函数changetwodecimal_uf(x){
var f_x=parsefloat(x);
if(isnan(f_x)){
警报(“函数:changetwodecimal->;参数错误”);
返回false;
}
var f_x=数学。圆形(x*100)/100;
var s_x=f_x.tostring();
var pos_uu'decimal=s_ux.indexof('.');
如果(位置小数<;0){
pos_uu十进制=s_ux.长度;
s_x+=';
}
while(s_x.length<;=pos_decimal+2){
s_x+='0';
}
返回s_x;
}
3、 js保留两位小数,并自动补零
函数returnfloat(值){
var值=数学。四舍五入(浮点值)*100)/100;
var xsd=值。tostring()。拆分(“.”);
如果(xsd.length==1){
值=值。tostring()+“.00”;
返回值;
}
如果(xsd.长度>;1){
if(xsd[1]。长度<;2){
值=值。tostring()+“0”;
}
返回值;
}
}
4、 js为整数,js为绝对值,js为四舍五入(可保留两位小数)
js取整数,js取绝对值,js取整(可以保留两位小数)。功能如下:
<;脚本语言=javascript>;
<;!--
函数jsmath()
{
文件写(数学地板(5.80)+“<;br>;”)//四舍五入
文件写(数学四舍五入(5.80)+“<;br>;”)//四舍五入到最接近的整数
文件写(数学四舍五入((5.80*100)/100)+“<;br>;”)//四舍五入至小数点后两位
文件写(math.ceil(5.10)+“<;br>;”)//使聚集
文件写(math.abs(-5.80)+“<;br>;”)//取绝对值
文件写(数学最大值(55,58)+“<;br>;”)//返回两个值的最大数目
文件写(math.min(55,58)+“<;br>;”)//返回两个值中的最小值
}
--&燃气轮机;
<;/脚本>;
<;部门>;
<;脚本>;jsmath();<;/脚本>;
<;/部门>;
总结
js数据格式在web前端开发中经常遇到,尤其是当数据类型为float时,需要进行特殊处理,如保留两位小数,小数点后的数据是否需要舍入等。以下是几种实现数据格式化并保留两位小数的方法
1.js附带了tofixed()方法。tofixed()方法可以将数字四舍五入为具有指定小数位的数字
语法:numberobjecttofixed(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=新数字(13.376954);
文件写入(num.tofixed(2))
<;/脚本>;
产出:13.38
2.自定义函数实现小数保留和舍入。
函数roundfund(numberround,rounddigit){//将要保留的位数舍入
如果(numberround>;=0){
var tempnumber=parseint((numberround*math.pow(10,rounddigit)+0.5))/math。功率(10,整数);
返回数字;
}否则{
numberround1=-numberround;
var tempnumber=parseint((numberround1*math.pow(10,rounddigit)+0.5))/math。功率(10,整数);
return-tempnumber;
}
}
然后调用roundfun()函数。如循环基金('13.376954',2);当然,返回的结果与第一个方法相同
3.通过函数截取,可以截取到小数点后的前几位。当然,这种方法没有舍入。
<;script type=“text/javascript”>;
tmp=13.376954〃
结果=tmp。substr(0,tmp.indexof(“.”)+2);
警报(结果);
<;/脚本>;
以上是reta的js方法的总结
- 上一篇:
- 下一篇:
本文网友上传,不代表本站立场,转载联系作者并注明出处