Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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# 1.000.000不是双c的有效值#_C#_Asp.net_.net_Globalization - Fatal编程技术网

C# 1.000.000不是双c的有效值#

C# 1.000.000不是双c的有效值#,c#,asp.net,.net,globalization,C#,Asp.net,.net,Globalization,可能重复: 尝试使用TypeConverter将“1.000.000”字符串解析为Double时出现异常。 我在异常时刻查看了System.Globalization.NumberFormatInfo,它看起来是这样的: {System.Globalization.NumberFormatInfo} CurrencyDecimalDigits: 2 CurrencyDecimalSeparator: "," CurrencyGroupSeparator: "."

可能重复:

尝试使用
TypeConverter
将“1.000.000”字符串解析为
Double
时出现异常。 我在异常时刻查看了
System.Globalization.NumberFormatInfo
,它看起来是这样的:

{System.Globalization.NumberFormatInfo}
    CurrencyDecimalDigits: 2
    CurrencyDecimalSeparator: ","
    CurrencyGroupSeparator: "."
    CurrencyGroupSizes: {int[1]}
    CurrencyNegativePattern: 8
    CurrencyPositivePattern: 3
    CurrencySymbol: "TL"
    DigitSubstitution: None
    IsReadOnly: false
    NaNSymbol: "NaN"
    NativeDigits: {string[10]}
    NegativeInfinitySymbol: "-Infinity"
    NegativeSign: "-"
    NumberDecimalDigits: 2
    NumberDecimalSeparator: ","
    NumberGroupSeparator: "."
    NumberGroupSizes: {int[1]}
    NumberNegativePattern: 1
    PercentDecimalDigits: 2
    PercentDecimalSeparator: ","
    PercentGroupSeparator: "."
    PercentGroupSizes: {int[1]}
    PercentNegativePattern: 2
    PercentPositivePattern: 2
    PercentSymbol: "%"
    PerMilleSymbol: "‰"
    PositiveInfinitySymbol: "Infinity"
    PositiveSign: "+"
解析“1.000.000”似乎没有问题,但它表示“1.000.000”不是
Double
的有效值。有什么问题? 我试图重写
Thread.CurrentThread.CurrentCulture
,但也不起作用

编辑::

这似乎也解决了我的问题。类型转换器实际上在没有千分位器的情况下工作。我加了一个,它就开始工作了

可能重复如何使用TypeConverter转换特定于区域性的double?–拉斯穆斯费伯

试试这个
NumberFormatInfo

var s = "1.000.000";
var info = new NumberFormatInfo
{
    NumberDecimalSeparator = ",", 
    NumberGroupSeparator = "."
};
var d = Convert.ToDouble(s, info);
只要与
NumberGroupSeparator
不同,就可以将
NumberDecimalSeparator
更改为其他内容


编辑:您指定的
NumberFormatInfo
也应该可以工作。

大多数普通的数字类型都有解析方法。如果您不确定TryParse是否有效,请使用它(尝试将“xyz”解析为数字将引发异常)

对于自定义解析,您可以定义如下所示的NumberFormatInfo:

var strInput = "1.000.000";
var numberFormatInfo = new NumberFormatInfo
{
    NumberDecimalSeparator = ",",
    NumberGroupSeparator = "."
};
double dbl = Double.Parse(strInput, numberFormatInfo);
这个解决方案也会起作用

var format = new System.Globalization.NumberFormatInfo();
format.NumberDecimalSeparator = ",";
format.NumberGroupSeparator = ".";
double dbl2 = Double.Parse("1.000.000", format);

一个或两个词到您当前的区域性,所需的区域性,您用来解析字符串的代码,以及您如何看待NumberFormatInfo?将其作为一个小而完整的代码段发布。实际上,我在LINQPAD4上将其作为一个小的控制台应用程序,它确实起到了作用。但它似乎不适用于大型应用程序本身。还有什么要看的吗