是否可以在代码后面实现脚本

时间:2011-08-10 11:41:43

标签: c# asp.net .net-2.0 c#-2.0

我有一个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>

或者如果有更简单的方法告诉我。我的实际要求是在文本框中对两个给定的金额求和,并在第三个文本框中显示金额。

例如,如果我通过上面的脚本将我的第一个值设为123.12,我将在我的文本框中显示为$123.12,第二个与$123.12相同,输出应为$246.23 任何人都可以帮助我

2 个答案:

答案 0 :(得分:3)

货币有一种标准格式:

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

答案 1 :(得分:0)

  1. 如果123.12 + 123.12 = 246.23那么您的客户可能不会满意
  2. 实际上是什么类型的数字?它看起来只是一个数字,但您要将其转换为字符串,删除$,符号,以便稍后添加它们?
  3. 您可以使用decimal.ToString(string format)方法,这样的方法可以为您提供正确的结果:
  4. 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,这与您的代码不同。