2016-11-06 15 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

あなたは非整数配列へのインデックスできないようなインデックスの値を設定することができますどのように

。そのために辞書を使う方が良いでしょう。それはのように、不等比較することができるが、実際に2つの類似に見えるフロートのための非常に一般的ではないだけだとして

フロートは、一般的に、ひどいインデックスを作ります。例えば

、ほとんどの環境で(1/3および1-(2/3)は、2つの異なる結果が得られますが。

0

あなたはDictionary<double, int>

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

は、浮動小数点の比較に注意して使用することができます

+0

これを確認するには、一定の浮動小数点値に対してのみ機能するので実用的ではありません。 –

0

あなたは決して非整数としてインデックスを持つことはできません。あなたが私に配列から1.57番目の要素を与えると想像してみてください。意味がありません。 indexをdecとしたい場合はimalまたはfloatを使用すると、DictionaryやHashTableなどの他のデータ型を使用できますが、キーを比較する際には精度に注意してください。

関連する問題