Можно ли реализовать скрипт в коде позади - PullRequest
0 голосов
/ 10 августа 2011

У меня есть код javascript, который конвертирует сумму в формат США. То же самое, что я хотел бы иметь в коде, может мне помочь.

    <script type="text/javascript">
function formatCurrency(num) {

num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}
    </script>

Или, если есть какой-то более простой метод, подскажитемне.Мое действительное требование состоит в том, чтобы сложить две заданные суммы в текстовых полях и отобразить сумму в 3-м текстовом поле.

Например, если у меня есть 1-е значение как 123.12 в приведенном выше сценарии, я получуотобразить в моем текстовом поле как $123.12, а второй как $123.12 вывод должен быть $246.23 Может ли кто-нибудь мне помочь

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

Существует стандартное форматирование для валюты:

double n = 12345.67;
Console.WriteLine(n.ToString("C2", CultureInfo.GetCultureInfo("en-US")));

Ouptut:

$12,345.67

Стандарт для отрицательных валютных значений, тем не менее, отображает его в скобках, поэтому, если вы хотите вместо него использовать отрицательный знак, вам нужно изменить язык:

CultureInfo info = new CultureInfo("en-US");
info.NumberFormat.CurrencyNegativePattern = 1;
double n = -12345.67;
Console.WriteLine(n.ToString("C2", info));

Ouptut:

-$12,345.67
0 голосов
/ 10 августа 2011
  1. Если 123.12 + 123.12 = 246.23, тогда ваши клиенты могут быть не довольны
  2. Какой тип на самом деле num? Похоже, это просто число, но вы конвертируете его в строку, удаляя знаки $ и ,, чтобы добавить их позже?
  3. Вы можете использовать decimal.ToString(string format) метод, что-то вроде этого должно дать вам надлежащие результаты:
static string Format(decimal x)
{
    return x.ToString("$#,0.00", System.Globalization.CultureInfo.InvariantCulture);
}

//Usage:
string currencyFormatedNumber = Format(-41023.43M); //returns -$41,023.43

Вы можете использовать что-то вроде этого:

static string Format(decimal x)
{
       return x.ToString("C", System.Globalization.CultureInfo.GetCultureInfo("en-us"));
}

, который используется для форматирования валюты, но форматирует отрицательные числа, так как они должны быть отформатированы ($100.00) означает -100.00 dollars, что отличается от вашего кода.

...