2016-09-02 54 views
-3

我试图找到总给我分配两个给定数量的阵列的位置,但我不断收到错误:找不到隐式转换

Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)

int[] firstarray= new int[4] { 4, 20, 60, 150 }; 
double[] secondarray= new double[4] { 5, 40.5, 65.4, 145.98 }; 

firstarray[0] = 20; 
secondarray[1] = 5; 

int totalarrays = firstarray[0] + secondarray[1]; 
Console.WriteLine("Total of the two arrays " + totalarrays); 
+1

'int totalarays = firstarray [0] + secondarray [1];'你用double来做数学,试图用整数totalarays来包含它。 –

+1

你读过错误了吗? –

+0

'var totalarrays = firstarray [0] + secondarray [1];'(请注意,'var')让编译器找出你的类型。 –

回答

1
int totalarays = firstarray[0] + secondarray[1]; 

应该是

double totalarays = firstarray[0] + secondarray[1]; 

一种int +一个doubledouble结束。如果没有,你会在结果中失去double的精确度 - 没有明确的方法来做到这一点。

如果您需要将double转换为int,根据您的要求有many different techniques

0

当你做

int totalarays = firstarray[0] + secondarray[1]; 

您试图添加一个double(secondarray [1])和一个int(firstarray [0]),并将结果转换为int。这可能会失去精度,因为double值的小数部分将被舍去。这是编译器警告你的。

,表明你满意的话,你可以这样写:

int totalarays = firstarray[0] + (int)secondarray[1]; 

这是明确转换的双重价值为int,通过浇铸的方式。

0

这应该工作。

int totalarrays = firstarray[0] + Int32.Parse(secondarray[1].ToString());