实现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 相关文章推荐
jQuery学习3:操作元素属性和特性
Feb 07 Javascript
js实现字符串转日期格式的方法
May 20 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
Jan 26 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
Mar 05 Javascript
angularjs封装bootstrap时间插件datetimepicker
Jun 20 Javascript
vue.js 表格分页ajax 异步加载数据
Oct 18 Javascript
webpack学习教程之前端性能优化总结
Dec 05 Javascript
详解swipe使用及竖屏页面滚动方法
Jun 28 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
Aug 07 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 Javascript
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
Vue接口封装的完整步骤记录
May 14 Vue.js
详谈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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
python 文件转成16进制数组的实例
2018/07/09 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
Unix如何添加新的用户
2014/08/20 面试题
医生进修自我鉴定
2014/01/19 职场文书
学生党支部先进事迹
2014/02/04 职场文书
产品质量承诺书范文
2014/03/27 职场文书
自我推荐信范文
2014/05/09 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
婚礼父母答谢词
2015/01/04 职场文书
社区工作者个人总结
2015/02/28 职场文书
什么是Python装饰器?如何定义和使用?
2022/04/11 Python