C#,输入字符串格式不正确,为十进制值
我试图创建一个简单的计算,用户输入一个值“kWh”,它将输出“ChargeAmount” 但是,我在将ChargeAmount转换为十进制值时遇到问题,并且出现错误“输入字符串格式不正确”。我可以在调试器中手动更改ChargeAmount的值,然后继续该程序,该程序将正确输出ChargeAmount。所以我认为这个错误与十进制转换有关 代码中有什么地方我做错了吗 谢谢大家!C#,输入字符串格式不正确,为十进制值,c#,C#,我试图创建一个简单的计算,用户输入一个值“kWh”,它将输出“ChargeAmount” 但是,我在将ChargeAmount转换为十进制值时遇到问题,并且出现错误“输入字符串格式不正确”。我可以在调试器中手动更改ChargeAmount的值,然后继续该程序,该程序将正确输出ChargeAmount。所以我认为这个错误与十进制转换有关 代码中有什么地方我做错了吗 谢谢大家! private decimal CCustMethod() { decimal kWh = Con
private decimal CCustMethod()
{
decimal kWh = Convert.ToDecimal(txtkWh.Text);
decimal ChargeAmount = Convert.ToDecimal(txtChargeAmount.Text);
if (radCommercial.Checked) //User checks on Commercial
{
if (kWh < 1000m) //Calculation for first 1000 kWh used
{
ChargeAmount = 60.0m;
}
else//Calculation when over 1000 kWh usage
{
ChargeAmount = (kWh - 1000) * 0.045m + 60.0m;
}
}
txtChargeAmount.Text = string.Format("{0:C2}", ChargeAmount); //Convert Flat Rate into format
return ChargeAmount;
}
private decimal CCustMethod()
{
十进制kWh=转换为十进制(txtkWh.Text);
十进制ChargeAmount=Convert.ToDecimal(txtChargeAmount.Text);
if(radCommercial.Checked)//用户检查商业
{
if(kWh<1000m)//计算第一次使用的1000kWh
{
收费金额=60.0m;
}
else//超过1000 kWh时的计算
{
电量=(kWh-1000)*0.045m+60.0m;
}
}
txtChargeAmount.Text=string.Format(“{0:C2}”,ChargeAmount);//将统一费率转换为格式
退单金额;
}
您可以尝试以下方法:
System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
customCulture.NumberFormat.NumberDecimalSeparator = ".";
System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
或者像这样:
using System.Globalization;
CultureInfo culture = new CultureInfo("en-US");
Convert.ToDecimal(value, culture);
因此,在您的情况下,它可能只是:
decimal ChargeAmount = Convert.ToDecimal(txtChargeAmount.Text,new CultureInfo("en-US"));
您可以尝试以下方法:
System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
customCulture.NumberFormat.NumberDecimalSeparator = ".";
System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
或者像这样:
using System.Globalization;
CultureInfo culture = new CultureInfo("en-US");
Convert.ToDecimal(value, culture);
因此,在您的情况下,它可能只是:
decimal ChargeAmount = Convert.ToDecimal(txtChargeAmount.Text,new CultureInfo("en-US"));
您在txtkWh框中键入什么?关于这一点,有成千上万的问题,所有问题都归结为一个简单的事实。根据操作系统的本地化规则,您提供的输入不能转换为十进制(或整数、浮点、日期时间等)。我输入任何十进制值,因此“5.6”作为一个例子,如果你生活在一个国家,在整数和小数部分之间使用不同的分隔符,那么这是不能转换为小数的。非常感谢!是美元导致该值无法转换。您在txtkWh框中键入什么?关于这一点,有成千上万的问题,所有问题都归结为一个简单的事实。根据操作系统的本地化规则,您提供的输入不能转换为十进制(或整数、浮点、日期时间等)。我输入任何十进制值,因此“5.6”作为一个例子,如果你生活在一个国家,在整数和小数部分之间使用不同的分隔符,那么这是不能转换为小数的。非常感谢!正是$导致该值无法转换为convertedCultureInfo.InvariantCultureInfo.InvariantCulture