小编Arn*_*ers的帖子

带小数分隔符的数字错误地转换为Double

在使用文化信息时,将数字转换为double时,我遇到了奇怪的行为.使用荷兰文化进行
转换时"3,3",处理正确.如果我"3,3"使用美国文化转换,它会返回33.我期待一个错误.看我的例子:

static void Main(string[] args)
{
    CultureInfo cultureDutch = new CultureInfo("nl-NL");
    CultureInfo cultureUS = new CultureInfo("en-US");

    System.Threading.Thread.CurrentThread.CurrentCulture = cultureDutch;
    Console.WriteLine("Input 3,3 --> Expected 3,3");
    Console.WriteLine("Output = " + Convert.ToDouble("3,3", cultureDutch));
    // Actual result --> 3,3

    Console.WriteLine("Input 3,3 --> Expected InvalidCastException");
    Console.WriteLine("Output = " + Convert.ToDouble("3,3", cultureUS));
    // Actual result --> 33

    Console.WriteLine();
    Console.WriteLine();

    System.Threading.Thread.CurrentThread.CurrentCulture = cultureUS;
    Console.WriteLine("Input 3.3 --> Expected InvalidCastException");
    Console.WriteLine("Output = " + Convert.ToDouble("3.3", cultureDutch));
    // Actual result --> 33

    Console.WriteLine("Input …
Run Code Online (Sandbox Code Playgroud)

c# cultureinfo

7
推荐指数
1
解决办法
123
查看次数

标签 统计

c# ×1

cultureinfo ×1