2016-11-06 3 views
1

C#에서 arr[4.2]=11;과 같은 배열의 부동 인덱스 값을 설정할 수 없습니다. 인덱서도 사용했습니다.배열의 부동 인덱스에 값을 설정하는 방법

암시 적 형식을 변환 할 수있는 오류가 있습니다

double[] arr=new double[10]; 

public double this[double index] 
{  
    get 
    { 
     if (index > 0 && index <=10) 
     {  
      return arr[index]; //here is error 
     } 
     else 
     { 
      return 0; 
     } 
    } 
    set 
    { 
     if (index > 0 && index <=10) 
     { 
      arr[index] = value; //here is error 
     } 
     else 
     { 
      Console.WriteLine("can not set value"); 
     } 
    } 
} 

'INT'arr[index]

에 '더블'.

어떻게 arr[1.5]=10;arr[2.4]=20;arr[0.2]=30;

답변

0

같은 인덱스에 값을 설정할 수 있습니다 할 수 있습니다 정수가 아닌하여 배열에 색인을 생성하지 않습니다. 사전을 사용하는 것이 더 나을 것입니다.

플로트는 일반적으로 끔찍한 색인을 만듭니다. 부동 한 두 개의 부동 수를 부동 한 것으로 비교하는 것이 가능할뿐만 아니라 매우 일반적입니다. 대부분의 환경에서 예를 들어

(1/3 1- (2/3) 두 가지 결과를 제공 할 것입니다.

0

당신은 Dictionary<double, int>

var data = new Dictionary<double, int>(); 
data[1.5] = 10; 
data[2.4] = 20; 
data[0.2] = 30; 

부동 소수점 비교 알고 있어야 사용할 수 있습니다 문제를 극복하려는 경우 decimal을 사용할 수 있습니다.

+0

그냥 확인하십시오. 부동 소수점 값에서만 작동하므로 실용적인 권장 사항이 아닙니다. –

0

절대 정수로 색인을 생성 할 수는 없습니다. 배열에서 1.57 번째 요소를 제공한다고 말하면 어떻게 될지 상상해보십시오. 의미가 없습니다. . 만약 당신이 지수를 dec imal 또는 float을 사용하면 Dictionary 또는 HashTable과 같은 다른 데이터 유형을 사용할 수 있지만 키를 비교하는 동안 정밀도는 알고 있어야합니다.

관련 문제