【问题标题】:.NET decimal.ToString(format) in Javascript.NET decimal.ToString(format) in Javascript
【发布时间】:2010-06-15 09:42:02
【问题描述】:

我有一个字符串 (€#,###.00) 可以在 .NET 中与 aDecimal.ToString("€#,###.00") 一起正常工作,我想知道是否有人知道如何实现用javascript

【问题讨论】:

    标签: .net javascript decimal


    【解决方案1】:

    .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 中测试。

    【讨论】:

    • 谢谢,但是没有多大帮助:p
    • @Mikael:你说得对,这不是很有帮助。我在帖子中添加了自己的解决方案,并在 Firefox、IE、Opera、Chrome 和 Safari 中进行了测试。
    【解决方案2】:

    我认为jQuery Globalization plugin 接近了

    【讨论】:

    • 是的,当我有一个语言环境时,我会使用它,但在某些情况下我没有,我只有那个格式字符串
    • 如果没有语言环境,您会从格式化字符串中得到什么输出?
    • 好吧,在这种情况下我有欧元,很难将欧元与单一语言环境联系起来,这就是为什么我希望能够为货币欧元指定格式,输入 1200.5 格式为 €#, ###.00 显然应该输出 €1,200.50 我想我必须尝试编写自己的函数,因为它似乎不存在。
    • 您可以在全球化插件中创建自己的“欧洲”语言环境。
    • 是的,这就是我的自动取款机,问题是它将来可能是其他自定义格式。但我想我以后得对付他们了。
    【解决方案3】:

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

    【讨论】:

    • 在我的情况下,为每个格式实例做 ajax 调用太多了
    猜你喜欢
    • 2022-12-27
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    相关资源
    最近更新 更多