实现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 相关文章推荐
Checbox的操作含已选、未选及判断代码
Nov 07 Javascript
调用jQuery滑出效果时闪烁的解决方法
Mar 27 Javascript
node.js中的http.createServer方法使用说明
Dec 14 Javascript
Javascript非构造函数的继承
Apr 27 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
VUE实现一个分页组件的示例
Sep 13 Javascript
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 Javascript
vue的全局提示框组件实例代码
Feb 26 Javascript
vue实现个人信息查看和密码修改功能
May 06 Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 Javascript
基于Express框架使用POST传递Form数据
Aug 10 Javascript
Vue实现附件上传功能
May 28 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
PHP自动生成月历代码
2006/10/09 PHP
随机头像PHP版
2006/10/09 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
js字符编码函数区别分析
2008/06/05 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python实现多人聊天室
2020/03/31 Python
pygame实现非图片按钮效果
2019/10/29 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
铭立家具面试题
2012/12/06 面试题
人力资源主管的岗位职责
2014/03/15 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
入职担保书怎么写
2014/05/12 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
单位接收函格式
2015/01/30 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
SQL Server中锁的用法
2022/05/20 SQL Server
如何利用python实现Simhash算法
2022/06/28 Python