实现js保留小数点后N位的代码


Posted in Javascript onNovember 13, 2014

在JS中,一般实现保留小数点后N位的话,都是利用toFixed函数

<script language="javascript"> 

document.write("<h1>JS保留两位小数例子</h1><br>"); 

var a=2.1512131231231321; 

document.write("原来的值:"+a+"<br>"); 

document.write("两位小数点:"+a.toFixed(2)+"<br>四位小数点"+a.toFixed(4)); 

</script>

四舍五入的转换函数,如下:

function round(v,e){

var t=1;

for(;e>0;t*=10,e--);

for(;e<0;t/=10,e++);

return Math.round(v*t)/t;

}

参数里的:

v表示要转换的值

e表示要保留的位数

函数里的两个for,这个是重点了,

第一个for针对小数点右边的情况,也就是保留小数点右边多少位;

第二个for针对小数点左边的情况,也就是保留小数点左边多少位。

for的作用,就是计算t的值,也就是v应该放大或者缩小多少倍的倍数(倍数=t)。

for这里利用到了for里的两个特性,条件判断和计数器累计(循环),

当e满足条件时for继续,并且e每次累加(e的每次累加,就是给for制造不满足循环的条件)的同时,也计算t的值。

最后利用了原生的round方法来计算被放大/缩小后的v的结果,然后把结果放大/缩小到正确的倍数

下面各种保留二位数实例

<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 相关文章推荐
9个JavaScript评级/投票插件
Jan 18 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
Feb 25 Javascript
JQuery 图片的展开和伸缩实例讲解
Apr 18 Javascript
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
May 19 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
Oct 30 Javascript
微信小程序实现tab左右切换效果
Nov 15 Javascript
详解JavaScript中操作符和表达式
Sep 12 Javascript
详解vue 自定义marquee无缝滚动组件
Apr 09 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
Jul 24 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
Dec 09 Javascript
使用Ajax实现无刷新上传文件
Apr 12 Javascript
详谈jQuery中的this和$(this)
Nov 13 #Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 #Javascript
jquery checkbox 勾选的bug问题解决方案与分析
Nov 13 #Javascript
Javascript window对象详解
Nov 12 #Javascript
a标签的href与onclick事件的区别详解
Nov 12 #Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
Nov 12 #Javascript
JavaScript实现关键字高亮功能
Nov 12 #Javascript
You might like
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
js压缩利器
2007/02/20 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
JavaScript实现连连看连线算法
2019/01/05 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
Python 创建子进程模块subprocess详解
2015/04/08 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
Django在win10下的安装并创建工程
2017/11/20 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Python内置类型性能分析过程实例
2020/01/29 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Python 创建守护进程的示例
2020/09/29 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
企业面试题试卷附带答案
2015/12/20 面试题
小学德育工作经验交流材料
2014/05/22 职场文书
员工试用期自我评价
2014/09/18 职场文书
学校食品安全责任书
2015/01/29 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
追悼会答谢词范文
2015/09/29 职场文书
python源码剖析之PyObject详解
2021/05/18 Python
python pygame 开发五子棋双人对弈
2022/05/02 Python
详解CSS3浏览器兼容
2022/12/24 HTML / CSS