.NET decimal.ToString (формат) в Javascript - PullRequest
2 голосов
/ 15 июня 2010

У меня есть строка (€ #, ###. 00), которая отлично работает с aDecimal.ToString ("€ #, ###. 00") в .NET, интересно, если кто-нибудь знает, как этого можно достичьс JavaScript

Ответы [ 3 ]

2 голосов
/ 15 июня 2010

Есть .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 лучше всех форматирует его как валюту.Вам лучше с собственной или чьей-либо реализацией .или 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);

Протестировано в IE, Firefox, Safari, Chrome и Opera только в моей собственной локали (en-GB).

1 голос
/ 15 июня 2010

Я думаю, плагин jQuery Globalization приближается

0 голосов
/ 15 июня 2010

Однажды у меня возникла та же проблема, и я решил пойти по несколько более жесткому (возможно, глупому) пути: я написал сервис, который принял десятичную в качестве параметра и вернул мне отформатированную строку. Основная проблема заключалась в том, что я не знал, какую культуру использовал пользователь в Javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...