解析双字符串不考虑当前的文化

时间:2016-02-12 19:12:42

标签: javascript c#

在javascript 客户端上,我发送十进制值:

"Latitude": 80.435435344

服务器端我收到字符串

"80,435435344"

然后我尝试解析字符串

valueResult.AttemptedValue = "80,435435344";
NumberFormatInfo dbNumberFormat = CultureInfo.CurrentCulture.NumberFormat;
actualValue = double.Parse(valueResult.AttemptedValue, dbNumberFormat);

我的文化是" de-DE"这意味着它的

NumberFormatInfo.NumberDecimalSeparator有","设置

但是当字符串被解析为 double 时,其表示形式为:

80.435435344

为什么我的逗号消失了?

1 个答案:

答案 0 :(得分:0)

你可以在调试器中看到,因为Visual Studio的文化在应用程序中与文化不同,所以当你在调试器中看到点而不是逗号时没有问题,因为应用程序以正确的方式处理它

同样,当你对double进行字符串化时,你应该指定格式提供者,它使用逗号代替点

double a = 80.435435344;
string aString = a.ToString(CultureInfo.CurrentCulture.NumberFormat);
//or
string aString = a.ToString(CultureInfo.CreateSpecificCulture("de-DE").NumberFormat);
// Both solutions return 80,435435344

你会得到你的逗号。