调整小数的格式保留小数点后两位

 更新时间:2014年05月14日 17:20:17   作者:  
调整小数的格式,如保留小数点后两位等等在开发过程中经常会遇到,下面本文搜集了一些不错的实现方法与分享
在开发过程中经常遇到要调整小数的格式,如保留小数点后两位等等。方法也颇为常见,备忘如下。

第一种,利用math.round

var original=28.453
1) //round "original" to two decimals
var result=Math.round(original*100)/100; //returns 28.45
2) // round "original" to 1 decimal
var result=Math.round(original*10)/10; //returns 28.5

第二种,js1.5以上可以利用toFixed(x) ,可指定数字截取小数点后 x位

3) //round "original" to two decimals
var result=original.toFixed(2); //returns 28.45

4) // round "original" to 1 decimal
var result=original.toFixed(1); //returns 28.5

以上两种方法最通用,但却无法满足某些特殊要求,比如保留小数点后两位,如果不满两位,不满两位则补零。此时就有了第三种方法。

第三种,转换函数,这段代码来源于国外一个论坛。
复制代码 代码如下:

function roundNumber(number,decimals) {
var newString;// The new rounded number
decimals = Number(decimals);
if (decimals < 1) {
newString = (Math.round(number)).toString();
} else {
var numString = number.toString();
if (numString.lastIndexOf(".") == -1) {// If there is no decimal point
numString += ".";// give it one at the end
}
var cutoff = numString.lastIndexOf(".") + decimals;// The point at which to truncate the number
var d1 = Number(numString.substring(cutoff,cutoff+1));// The value of the last decimal place that we'll end up with
var d2 = Number(numString.substring(cutoff+1,cutoff+2));// The next decimal, after the last one we want
if (d2 >= 5) {// Do we need to round up at all? If not, the string will just be truncated
if (d1 == 9 && cutoff > 0) {// If the last digit is 9, find a new cutoff point
while (cutoff > 0 && (d1 == 9 || isNaN(d1))) {
if (d1 != ".") {
cutoff -= 1;
d1 = Number(numString.substring(cutoff,cutoff+1));
} else {
cutoff -= 1;
}
}
}
d1 += 1;
}
if (d1 == 10) {
numString = numString.substring(0, numString.lastIndexOf("."));
var roundedNum = Number(numString) + 1;
newString = roundedNum.toString() + '.';
} else {
newString = numString.substring(0,cutoff) + d1.toString();
}
}
if (newString.lastIndexOf(".") == -1) {// Do this again, to the new string
newString += ".";
}
var decs = (newString.substring(newString.lastIndexOf(".")+1)).length;
for(var i=0;i<decimals-decs;i++) newString += "0";
//var newNumber = Number(newString);// make it a number if you like
document.roundform.roundedfield.value = newString; // Output the result to the form field (change for your purposes)
}

5) //round "original" to two decimals
var result=original.toFixed(2); //returns 28.45

6) // round "original" to 1 decimal
var result=original.toFixed(1); //returns 28.5

var original=28.4
var result=original.toFixed(2); //returns 28.40

相关文章

  • JavaScript 仿关机效果的图片层

    JavaScript 仿关机效果的图片层

    最近发现了一用 YUI 做的 Lightbox, 只需少量的设置就能类Window关机的效果来显示图片。
    2008-12-12
  • JS中toFixed(2)精度问题的原因以及解决办法

    JS中toFixed(2)精度问题的原因以及解决办法

    最近发现JS当中toFixed()方法存在一些问题,所以这里给大家总结下,这篇文章主要给大家介绍了关于JS中toFixed(2)精度问题的原因以及解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • JavaScript 特有方法计算二进制中1的个数 split方法

    JavaScript 特有方法计算二进制中1的个数 split方法

    这是一道网上看到的前端的笔试题,主要思想是利用JavaScript的toString方法将十进制数转换为二进制的字符串。然后for循环遍历计算字符串中”1″出现的次数。
    2010-05-05
  • 原生js实现表单的正则验证(验证通过后才可提交)

    原生js实现表单的正则验证(验证通过后才可提交)

    这篇文章主要给大家介绍了关于如何利用原生js实现表单的正则验证,所有验证都通过后提交按钮才可用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 小程序展示弹窗常见API实例详解

    小程序展示弹窗常见API实例详解

    弹窗对我们大家来说应该都不陌生,这篇文章主要给大家介绍了关于小程序展示弹窗常见API的相关资料,主要包括showToast, showModal,showLoading和showActionSheet,需要的朋友可以参考下
    2022-09-09
  • js实现京东秒杀倒计时功能

    js实现京东秒杀倒计时功能

    这篇文章主要为大家详细介绍了js实现京东秒杀倒计时功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • javascript 闭包函数做显隐内容

    javascript 闭包函数做显隐内容

    用闭包函数做显隐内容,主要优势就是可以增加显示与隐藏效率。
    2009-03-03
  • javascript eval和JSON之间的联系

    javascript eval和JSON之间的联系

    本文着重解释eval函数和JSON数据格式之间的联系以及一些细节上的问题。
    2009-12-12
  • ie下js不执行的几种可能

    ie下js不执行的几种可能

    本文主要介绍了ie下js不执行的几种可能,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • vue2.0获取自定义属性的值

    vue2.0获取自定义属性的值

    这篇文章主要为大家详细介绍了vue2.0如何获取自定义属性的值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03

最新评论