1

プログラムの冒頭で変数を宣言しました。変数はプログラムの範囲内で宣言および使用されていると思います。

double a,u; int i;
for (i = 0; i < 30; i++)
{
    u += (i + 1) * datas[i];
}

デバッグモードで保存されたuの値を確認できますが、他の場所では使用できませんでした「割り当てられていないローカル変数uの使用」代わりに10進数を使用する必要がありますか? 私は10進数を使用してtruedしましたが、私も使用したので

datas[i-1] = Convert.ToDouble(dataReader["high"]);

プログラムのどこかで、C# で利用できる Convert.toDecimal() があるとは思いません。double と decimal の違いは何ですか。PS: 10 進数を使用したことがない

4

5 に答える 5

11

C# では、初期化されていない変数の使用は許可されていません。デフォルト値を割り当てないか、コンストラクターを使用しない場合、コンパイラーは値を認識できないため、使用できません。

またはを変更double aする必要があります。この操作は、このデフォルト値テーブルに従って、デフォルト値をゼロに設定します。ただし、推奨される構文です。double a = 0;double a = new double();new double()= 0

補足として、独自の行で変数を宣言することも、C# での優れた方法です。ループ変数をforステートメントで直接宣言する場合も同様です。また、意味のある変数名を使用することをお勧めします (誰にとっても明らかではありません)。読みやすさは非常に重要ですau

double a = 0;
double u = 0;

for (int i = 0; i < 30; i++)
{
    u += (i + 1) * datas[i];
}

double と decimal の違いは何ですか。

decimal通常は、精度が高いため (倍精度の 15 ~ 16 桁に対して 28 ~ 29 桁)、通貨または金融操作に使用されます。ただし、 double よりもはるかに小さい範囲です。decimal範囲は最大 7.9 x 10^28 になり、double最大 1.7 x 10^308 になります。

一方、高い精度や広い範囲を必要としない場合floatは、32 ビット (double の 64 と比較して) として使用するのに最適な型になります。

于 2013-08-08T15:41:33.857 に答える
9

変数 u には値が割り当てられていないため、ループでは使用できません。代わりにこれを試してください:

double a = 0;double u = 0; int i;
for (i = 0; i < 30; i++)
{
    u += (i + 1) * datas[i];
}
于 2013-08-08T15:32:51.193 に答える
5

変数uは の最初の実行では代入されずu += ...
u += x;と同等u = u + x;であるため、コンパイラはこれにフラグを立てます。uのデフォルト値があります0が、コンパイラはそれを使用できません。ここでは適切なプログラミング スタイルが適用されます。

おそらくあなたが望むのは:

double a, u = 0; 

for (int i = 0; i < datas.Length; i++)
{
    u += (i + 1) * datas[i];
}

ただし、同じ問題が発生する可能性がaあります。

于 2013-08-08T15:32:22.897 に答える
2

u使用する前に値を割り当てる必要があります。

double u = 0;

コンパイラは に変換u += 1u = u + 1ます。ご覧のとおり、 を読みuましたが、この変数に値を割り当てていません。そのため、コンパイラは、割り当てられていないローカル変数を使用していると通知します

于 2013-08-08T15:34:59.130 に答える
0

変数 u に値を割り当てたことはありません。宣言を次のように変更します...

ダブル u = 0;

于 2013-08-08T15:33:29.120 に答える