Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#,输入字符串格式不正确,为十进制值_C# - Fatal编程技术网

C#,输入字符串格式不正确,为十进制值

C#,输入字符串格式不正确,为十进制值,c#,C#,我试图创建一个简单的计算,用户输入一个值“kWh”,它将输出“ChargeAmount” 但是,我在将ChargeAmount转换为十进制值时遇到问题,并且出现错误“输入字符串格式不正确”。我可以在调试器中手动更改ChargeAmount的值,然后继续该程序,该程序将正确输出ChargeAmount。所以我认为这个错误与十进制转换有关 代码中有什么地方我做错了吗 谢谢大家! private decimal CCustMethod() { decimal kWh = Con

我试图创建一个简单的计算,用户输入一个值“kWh”,它将输出“ChargeAmount”

但是,我在将ChargeAmount转换为十进制值时遇到问题,并且出现错误“输入字符串格式不正确”。我可以在调试器中手动更改ChargeAmount的值,然后继续该程序,该程序将正确输出ChargeAmount。所以我认为这个错误与十进制转换有关

代码中有什么地方我做错了吗

谢谢大家!

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