Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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#如何将双精度数组转换为整数数组_C#_Arrays_Int_Double_Converter - Fatal编程技术网

C#如何将双精度数组转换为整数数组

C#如何将双精度数组转换为整数数组,c#,arrays,int,double,converter,C#,Arrays,Int,Double,Converter,这是我第一篇关于堆栈溢出的文章。如果我做错了,请纠正我: 使用C#,我想将一个double转换为一个长度可变的int数组,该数组等于double中的总位数 例如,如果我的数字是35.777778,我希望将其转换为int数组,其中 array[0] = 3 array[1] = 5 array[2] = 7 etc. 我计划遍历数组并将数组[I]与数组[I+1]进行比较 double是两个变量数的商。所以它可能只有很少的数字或者很多数字 到目前为止,我已经尝试将其转换为字符串,然后再转换为整数数

这是我第一篇关于堆栈溢出的文章。如果我做错了,请纠正我:

使用C#,我想将一个double转换为一个长度可变的int数组,该数组等于double中的总位数

例如,如果我的数字是35.777778,我希望将其转换为int数组,其中

array[0] = 3
array[1] = 5
array[2] = 7
etc.
我计划遍历数组并将数组[I]与数组[I+1]进行比较

double是两个变量数的商。所以它可能只有很少的数字或者很多数字

到目前为止,我已经尝试将其转换为字符串,然后再转换为整数数组。但它在小数点处崩溃了


请帮帮我…

你可以用你刚才的方法(转换成字符串,然后将每个字符解析成整数)去掉小数点。像这样:

var nums = decimalNum.ToString().Replace('.', '').ToCharArray();
int[] numbers = new int[nums.Count];
var x = 0;
foreach (var item in nums)
{
    numbers[x] = Integer.ParseInt(item);
    x++;
}
这显然不是最漂亮的解决方案,但它会起作用。

这应该可以做到:

int[] array = 35.777778.ToString().Replace(".", String.Empty)
                                  .Select(c => (int)Char.GetNumericValue(c))
                                  .ToArray();

浮点到十进制数字的转换是一个难题。在.NET中,可用的工具实际上是double.ToString方法,该方法过于臃肿,在需要数字时尤其糟糕。如您所见,其他答案都必须解析回整数

如果性能很重要,那么有一些好的双字符串转换算法可以根据您的需要进行修改。这个很好:


即使双精度值包含任何字符,如E-10,此代码也能工作。这可能很有趣,当一个数字的最大值为10时,为什么需要一个整数数组?这种数组称为“字符串”@Alex您应该更清楚。是9点我需要从0到9中抽出个位数。这很有效!我确实自己解决了这个问题,但使用的代码比这个多得多。谢谢孔巴!问题:这个解决方案在控制台应用程序中非常有效。但当我试图将它添加到一个便携库时,它说没有“String.select”这样的动物。我需要添加一个引用或类似的东西吗?那是因为
String
在PCLs中没有实现
IEnumerable
。因此,您必须使用
tocharray()
将字符串转换为字符数组,如下所示:
。替换(…)。tocharray()。选择(…
int[] array = 35.777778.ToString().Where(c => char.IsDigit(c)).Select(c1 => Convert.ToInt32(c1.ToString())).ToArray();