首页 > 解决方案 > 将整个字符串数组转换为双数组会引发输入格式异常,但转换单个元素可以正常工作

问题描述

我正在尝试将字符串数组(我从 .txt 文件填充)转换为 C# 中的双精度数组。

这是我尝试过的,使用 for 循环,我在其他解决方案中看到过。

            string[] StringArr = File.ReadAllLines("256.txt");

            double[] DoubleArr = new double[StringArr.Length];

            for(int i = 0; i < StringArr.Length; i++)
            {
                DoubleArr[i] = Convert.ToDouble(StringArr[i]);
            }

这引发了异常“System.FormatException:'输入字符串的格式不正确。” 为了

DoubleArr[i] = Convert.ToDouble(StringArr[i]);

我以为文本文件中的数据格式有问题,但是当我尝试

DoubleArr[0] = Convert.ToDouble(StringArr[0]);
Console.WriteLine(DoubleArr[0]);

这在没有抛出异常的情况下工作,并打印了正确的数字。

我认为我一定在 for 循环中做错了什么?

标签: c#arraystype-conversion

解决方案


如果不查看您的数据,您可能会遇到以下问题Incorrect decimal separator

不同的文化使用不同的小数分隔符(,例如.

如果你更换 . ,一切都会好起来的

或者你使用文化:

double.Parse("12.345", System.Globalization.CultureInfo.InvariantCulture)

此外,您可能有一个不正确的空值


推荐阅读