Javascript中的.NET decimal.ToString(格式)

时间:2010-06-15 09:42:02

标签: .net javascript decimal

我有一个字符串(€#,###。00),可以在.NET中使用aDecimal.ToString(“€#,###。00”)工作,我想知道是否有人知道如何实现这一点用javascript

3 个答案:

答案 0 :(得分:2)

.toLocaleString(),但不幸的是,规范将此定义为“依赖于实现” - 我讨厌他们这样做。因此,它在不同的浏览器中表现不同:

var val = 1000000;

alert(val.toLocaleString())
// -> IE: "1,000,000.00"
// -> Firefox: "1,000,000"
// -> Chrome, Opera, Safari: "1000000" (i know, it's the same as toString()!)

所以你可以看到它不能被依赖,因为ECMA团队懒得去正确定义它。 Internet Explorer最好将其格式化为货币。你自己或someone else的实施最好。


mine

(function (old) {
    var dec = 0.12 .toLocaleString().charAt(1),
        tho = dec === "." ? "," : ".";

    if (1000 .toLocaleString() !== "1,000.00") {
        Number.prototype.toLocaleString = function () {
           var f = this.toFixed(2).slice(-2); 
           return this.toFixed(2).slice(0,-3).replace(/(?=(?!^)(?:\d{3})+(?!\d))/g, tho) + dec + f;
        }
    }
})(Number.prototype.toLocaleString);

仅在我自己的语言环境(en-GB)中测试IE,Firefox,Safari,Chrome和Opera。

答案 1 :(得分:1)

答案 2 :(得分:0)

我曾经遇到过同样的问题,我决定采用一种过度设计(可能是愚蠢的)方式:我写了一个接受小数作为参数的服务,并给了我一个格式化的字符串。主要问题是,我不知道用户在Javascript中使用了哪种文化。