我在ASP.NET webform中有一个属性类型设置为number的TextBox,如下所示:
<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"))