Javascript将数字转换为不同的格式或字符串替代

时间:2011-10-16 09:55:08

标签: javascript jquery

更新:

使用javascript或jQuery,如何将数字转换为不同的变体:

例如:

百万 为...

1,000,000 or 1000K

OR

1000 为...

1,000 or 1K

OR

1934年和1234年 为...

1,934 or -2K (under 2000 but over 1500)

1,234 or 1k+  (over 1000 but under 1500)

这可以在函数中完成吗?

希望这是有道理的。

C

2 个答案:

答案 0 :(得分:3)

您可以向Number.prototype添加方法,例如:

Number.prototype.addCommas = function () {
    var intPart = Math.round(this).toString();
    var decimalPart = (this - Math.round(this)).toString();
    // Remove the "0." if it exists
    if (decimalPart.length > 2) {
        decimalPart = decimalPart.substring(2);
    } else {
        // Otherwise remove it altogether
        decimalPart = '';
    }
    // Work through the digits three at a time
    var i = intPart.length - 3;
    while (i > 0) {
        intPart = intPart.substring(0, i) + ',' + intPart.substring(i);
        i = i - 3;
    }
    return intPart + decimalPart;
};

现在您可以将其称为var num = 1000; num.addCommas(),它将返回"1,000"。这只是一个例子,但你会发现创建的所有函数都涉及在过程的早期将数字转换为字符串,然后处理和返回字符串。 (分隔整数和小数部分可能特别有用,因此您可能希望将其重构为自己的方法。)希望这足以让您入门。

编辑:以下是如何做K事......这个更简单:

Number.prototype.k = function () {
    // We don't want any thousands processing if the number is less than 1000.
    if (this < 1000) {
        // edit 2 May 2013: make sure it's a string for consistency
        return this.toString();
    }
    // Round to 100s first so that we can get the decimal point in there
    // then divide by 10 for thousands
    var thousands = Math.round(this / 100) / 10;
    // Now convert it to a string and add the k
    return thousands.toString() + 'K';
};

以同样的方式调用此方法:var num = 2000; num.k()

答案 1 :(得分:0)

理论上,是的。

TimWolla指出,这需要很多逻辑。

Ruby on Rails有一个帮助用词来表达时间。看看documentation。该代码的实现是found on GitHub,并且可以给你一些关于如何实现它的提示。

我同意评论通过选择一种格式来降低复杂性。

希望你在我的回答中找到一些帮助。