Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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#_Asp.net_Double - Fatal编程技术网

C# 使用逗号-小数分隔符将字符串值解析为双精度

C# 使用逗号-小数分隔符将字符串值解析为双精度,c#,asp.net,double,C#,Asp.net,Double,如果有人能找到解决办法的话 string x = "7,50"; string y = "5"; double a = double.Parse(x); double b = double.Parse(y); double c = a - b; 那么结果必须是2,50 但我得了70分。因为小数点x被视为75。只需指定适当的区域性以double.Parse。例如: CultureInfo french = new CultureInfo("fr-FR"); double x = double.P

如果有人能找到解决办法的话

string x = "7,50";
string y = "5";
double a = double.Parse(x);
double b = double.Parse(y);
double c = a - b;
那么结果必须是2,50


但我得了70分。因为小数点x被视为75。

只需指定适当的区域性以
double.Parse
。例如:

CultureInfo french = new CultureInfo("fr-FR");
double x = double.Parse("7,50", french);
我怀疑您实际上使用了“7,5”作为值,但是,如果您使用的区域性不使用逗号作为分隔符,那么“7,50”将被解析为“750”


当然,如果这些是货币值,你应该考虑使用<代码>十进制< /代码>而不是<代码>双< /> >从…

开始,你当前的文化设置为什么?我使用的是TR TR。我还添加了双A=双.PARSE(X,新CultureInfo(TR TR));double a=double.Parse(x,CultureInfo.InvariantCulture);但事实并非如此work@ypbr:“它不起作用”是不够的信息。请在问题中编辑一个简短但完整的程序,并包括输出。这是一个主笔划+1i的pardes值为7.5。解析前为7,解析后为7。5@ypbr:根本不清楚您的意思,但您需要了解值本身(作为
双精度
)没有逗号或点-它只是一个数字。仅当将格式转换为字符串或从字符串转换为格式时,格式才变得相关。你没有给我们提供足够的信息来说明数据来自何处,如何检查值等等。我只是创建了一个字符串值,比如string a=“7,50”;我把它削减到原来的两倍。然后变成7.5?然后我从中减去5,结果是70?不清楚吗?我的英语很抱歉,如果它正确地将“7,50”解析为7.5,那么我非常怀疑减去5等于70。请用一个简短但完整的程序更新您的问题,该程序演示了问题,包括在解析时指定区域性。