为什么c#将带有逗号或货币符号的数字转换为整数

本文关键字:符号 数字 转换 整数 货币 为什么 | 更新日期: 2023-09-27 18:08:50

我在aspx页面上有一个文本框,在文本框文本更改事件中,我注意到即使用户输入2,000或$2,000,它也会自动转换为2000。这让我措手不及,因为我认为我应该在将数字赋值给整数变量之前从数字中删除$符号和逗号。类似如下

int ID = txtID.text.Replace(",","").Replace("$", "");

这个特性是最近才引入的还是从c# 1.0开始的?

为什么c#将带有逗号或货币符号的数字转换为整数

应该使用十进制。以这种格式尝试解析:

decimal result = 0;
Decimal.TryParse(text, 
    NumberStyles.Currency, 
    CultureInfo.CurrentCulture, 
    out result);

确保你选择了正确的文化!

查看这个演示

试着使用以下语句:

double _amt = double.Parse (txtID.text.Replace(",",String.Empty).Replace("$", String.Empty));

相应地,要将_amt显示为字符串,请使用"C"货币格式说明符,如:

string _strAmt = _amt.ToString("C");

希望这对你有用。

对你的问题做一点澄清:在你所展示的例子中

int ID = txtID.text.Replace(",","").Replace("$", "")

系统隐式地尝试将作为字符串呈现的数字转换为指定的int ID变量。还有(引用):"2,000或$2,000会自动转换为200"——它真的是200或2000吗?

问好,

答案是

var id = txtID.text.Replace(",", "");
var id = txtID.text.Replace("$", "");
int result = Convert.ToInt32(id);

2000 =比;2000