如何将值文本框类型=数字转换为十进制
How to convert value textbox type=number to decimal
我在 asp.net 网络表单中有一个文本框,属性 类型设置为数字,如下所示:
<asp:TextBox runat="server" ID="Price" placeholder="Price" Type="Number" step=".01" />
我很难将其值转换为小数,因为尽管使用小数分隔符,但我总是得到一个整数,例如:
1.23 至 123.00
您的问题出在您为转换传递的 CultureInfo 上,看起来小数的“it-IT”标准使用的是逗号而不是点。这是一个例子:
var x = "1,23";
Console.WriteLine(Convert.ToDecimal(x, new CultureInfo("it-IT")));
var y = "1.23";
Console.WriteLine(Convert.ToDecimal(y, new CultureInfo("it-IT")));
对于使用指定 CultureInfo 的代码,您需要在转换时将点替换为逗号,或者完全删除 CultureInfo 规范并继续使用点。
此外,如果您要将其转换为在显示屏上显示价格标签,您也可以使用它:
Convert.ToDecimal("1,23").ToString("C", new CultureInfo("it-IT"))
这个是为了"it-IT"
","是小数点分隔符,当你发送1.1时会被当作"1,1",一般客户端UI客户端文化必须和服务器文化,如果你真的想解决这个问题。在十进制转换前替换“.”用逗号。像下面这样的东西。看不到任何解决方法。
string textFormat = Price.Text.Replace(".",",");
decimal MyPrice =
Convert.ToDecimal(textFormat, CultureInfo.CreateSpecificCulture("it-IT"));
Console.WriteLine(MyPrice);
我在 asp.net 网络表单中有一个文本框,属性 类型设置为数字,如下所示:
<asp:TextBox runat="server" ID="Price" placeholder="Price" Type="Number" step=".01" />
我很难将其值转换为小数,因为尽管使用小数分隔符,但我总是得到一个整数,例如:
1.23 至 123.00
您的问题出在您为转换传递的 CultureInfo 上,看起来小数的“it-IT”标准使用的是逗号而不是点。这是一个例子:
var x = "1,23";
Console.WriteLine(Convert.ToDecimal(x, new CultureInfo("it-IT")));
var y = "1.23";
Console.WriteLine(Convert.ToDecimal(y, new CultureInfo("it-IT")));
对于使用指定 CultureInfo 的代码,您需要在转换时将点替换为逗号,或者完全删除 CultureInfo 规范并继续使用点。
此外,如果您要将其转换为在显示屏上显示价格标签,您也可以使用它:
Convert.ToDecimal("1,23").ToString("C", new CultureInfo("it-IT"))
这个是为了"it-IT"
","是小数点分隔符,当你发送1.1时会被当作"1,1",一般客户端UI客户端文化必须和服务器文化,如果你真的想解决这个问题。在十进制转换前替换“.”用逗号。像下面这样的东西。看不到任何解决方法。
string textFormat = Price.Text.Replace(".",",");
decimal MyPrice =
Convert.ToDecimal(textFormat, CultureInfo.CreateSpecificCulture("it-IT"));
Console.WriteLine(MyPrice);