将Javascript值固定为0个小数位数

问题描述

|| 我有此脚本正在格式化我的货币,但现在无法将我的值固定为0小数位,我是javascript的新手,所以有人可以解释在哪里和我要这样做吗?谢谢
function FormatNumberBy3(num,decpoint,sep) {
  // check for missing parameters and use defaults if so
  if (arguments.length == 2) {
    sep = \",\";
  }
  if (arguments.length == 1) {
    sep = \",\";
    decpoint = \".\";
  }
  // need a string for operations
  num = num.toString();
  // separate the whole number and the fraction if possible
  a = num.split(decpoint);
  x = a[0]; // decimal
  y = a[1]; // fraction
  z = \"\";


  if (typeof(x) != \"undefined\") {
    // reverse the digits. regexp works from left to right.
    for (i=x.length-1;i>=0;i--)
      z += x.charAt(i);
    // add seperators. but undo the trailing one,if there
    z = z.replace(/(\\d{3})/g,\"$1\" + sep);
    if (z.slice(-sep.length) == sep)
      z = z.slice(0,-sep.length);
    x = \"\";
    // reverse again to get back the number
    for (i=z.length-1;i>=0;i--)
      x += z.charAt(i);
    // add the fraction back in,if it was there
    if (typeof(y) != \"undefined\" && y.length > 0)
      x += decpoint + y;
  }
  return x;
}
    

解决方法

我可能会误解您的问题,但这听起来像您想要Math.floor() http://www.javascripter.net/faq/mathfunc.htm     ,您可以用数学方法对数字进行四舍五入,这要快得多,快得多而且非常简单。仅在此站点上,实际上就有数百个这种算法的示例。
function round(number,places)
{
    var multiplicator = Math.pow(10,places);
    return Math.round(number * multiplicator) / multiplicator;
}

alert(round(123.456,0)); // alerts \"123\"
此功能可让您舍入到任意小数位。如果要舍入到最接近的整数,可以简单地使用
Math.round(x)
Math.round
将十进制数舍入到最接近的整数。假设您想保留3个小数位,您所要做的就是将小数乘以1000(即10的幂3),四舍五入到最接近的整数,然后除以1000。这就是该代码段的作用。     ,您的函数似乎对我有用...我假设将
\"1000\"
作为参数传递的结果应该是
\"1,000\"
?我不确定我理解“将[您的]值固定为0个小数位”是什么意思。 这是我编写的用于一次格式化数字格式的函数(就像上面的函数一样):
function num_format(str) {
    if (typeof str !== \'string\' || /[^\\d,\\.e+-]/.test(str)) {
        if (typeof str === \'number\') {
            str = str.toString();
        } else {
            throw new TypeError(\"Argument is not a string with a number in it\");
        }
    }
    var reg = /(\\d+)(\\d{3})/;
    str = str.split(\".\");
    while (reg.test(str[0])) {
        str[0] = str[0].replace(reg,\"$1,$2\");
    }
    return str.join(\".\");
}
删除错误检查代码,它会变成一个很短的小功能(五行)。传递任何数字,它将正确格式化,尽管我不允许指定分隔符。 至于将数字四舍五入到任意小数位,我建议看上面zneak的答案。然后简单地做:
num_format(round(\"100000.12341234\",2));
得出
\"100,000.12\"
的结果。     ,此功能应能够在所有各种情况下使用:
function formatNumber(num,precision,sep,thousand,addTrailing0) {
    if (isNaN(num))
        return \"\";
    if (isNaN(precision))
        precision = 2;
    if (typeof addTrailing0 == \"undefined\")
        addTrailing0 = true;

    var factor = Math.pow(10,precision);
    num = String(Math.round(num * factor) / factor);

    if (addTrailing0 && precision > 0) {
        if (num.indexOf(\".\") < 0)
            num += \".\";
        for (var length = num.substr(num.indexOf(\".\")+1).length; length < precision; ++length)
            num += \"0\";
    }

    var parts = num.split(\".\");
    parts[0] = parts[0].split(\"\").reverse().join(\"\").replace(/(\\d{3})(?=\\d)/g,\"$1\" + (thousand || \",\")).split(\"\").reverse().join(\"\");

    num = parts[0] + (parts.length > 1 ? (sep || \".\") + parts[1] : \"\");

    //debug:
    document.write(num + \"<br />\");

    return num;
}
例子:
formatNumber(32432342342.3574,0);             // 32,432,342,342
formatNumber(32432342342.3574,2);             // 32,342.36
formatNumber(1342.525423,4,\".\",\",\");        //          1,342.5254
formatNumber(1342.525423,2,\".\");        //          1.342,53
formatNumber(1342.525423);                     //          1,342.53
formatNumber(1342.525423,0);                  //          1,343
formatNumber(342.525423,8);                   //            342.52542300
formatNumber(42.525423,8,null,false); //             42.525423
formatNumber(2.5,3,\".\");                //              2,500
http://jsfiddle.net/roberkules/xCqqh/上的Working Live Demo     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...