C# 转换数字并接受任何十进制分隔符

C# 转换数字并接受任何十进制分隔符,c#,formatting,C#,Formatting,我有一个双倍号码0401780062641746 我想将其格式化为0.40178006 我正在使用以下代码: string.Format("{0:0.00000000%}", dNum); 但结果是40.17800626 我希望能够为十进制分隔符键入或,。所以我用 NumberStyles.Any 例如: double.TryParse(textBox1.Text, NumberStyles.Any, CultureInfo.InvariantCulture, out dNum); 但显然

我有一个双倍号码
0401780062641746

我想将其格式化为
0.40178006

我正在使用以下代码:

string.Format("{0:0.00000000%}", dNum);
但结果是
40.17800626

我希望能够为十进制分隔符键入
。所以我用

NumberStyles.Any
例如:

double.TryParse(textBox1.Text, NumberStyles.Any, CultureInfo.InvariantCulture, out dNum);
但显然这是个问题,现在我无法按我想要的方式转换数字。
有什么想法吗

如果您只需要处理小数点,因此不需要处理分组分隔符,最简单的选择是将任何逗号替换为点:

string input = ...;
input = input.Replace(',', '.');
double value;
if (double.TryParse(input, CultureInfo.InvariantCulture))
{
    // Use value
}
else
{
    // Handle invalid input
}

请注意,这将只处理作为十进制分隔符的
,并且不会执行任何其他特定于区域性的解析。

您是否尝试过此->
double.TryParse(textBox1.Text,NumberStyles.AllowDecimalPoint,CultureInfo.InvariantCulture,out dNum)@sudhakardipudi是的,但这种方式不允许我使用像0123这样的数字,但只能使用0。123@user3473957:您是否也需要能够处理分组分隔符?例如,
3456
可能表示“介于3和4之间”或“介于3000和4000之间”。@JonSkeet不,我不需要这个,只需要小数分隔符。因此,在您的示例中,数字将介于3和4之间。我将调用TryParse两次,一次调用使用
作为分隔符的区域性,一次调用使用
的区域性。省略NumberStyles.AllowThousands以避免歧义。关于格式:
string.format(“{0:0.00000000}”,dNum),删除%symbol。@用户3449857有什么区别?%将您的值乘以100。用于百分比。