|
■No78072 (とっちゃん さん) に返信 > ■No78071 (タカタ さん) に返信 >>ありがとうございます。加算されていく様子が確認できました。 >> >>しかし、加算しているはずなので、途中から sumY の値が 下がる現象が見られました、、、 >> >>fn(Ti) の式がおかしいのですかね、、、 fn(Ti) の値は見ている限りでは、常に + の値を出しているのですが、、、 > > sumY の値に、fn(Ti) の結果を足すと、Int32 の扱える最大値(2,147,483,647=0x7FFFFFFF) を超える値になりませんか? > fn(T) が返す値とその総和が上記の最大値を超えるなら、それを扱える数値型を使う必要があります。 > > 現在のコンピュータの整数演算は基本的に有限値しか扱えません。 > Int64(9,223,372,036,854,775,807=0x7FFFFFFFFFFFFFFF) を使うか > さらに大きな値(物理メモリの制限のみ受ける)BigInteger 型を使うことになります。
初歩的な質問にわざわざご対応頂き有難う御座います。
Int32の扱える最大値を超えているかどうか確認しましたが、超える値にはなっていないようです。
以下のようなプログラムで繰り返しXの変数を足し算しているのですが、どうもうまくできません。
float Y = 0; for (int i=1; i<=Time; i++) { Y += X; }
Xの変数が 10,11,12,13・・・と時間変数Timeが増えるごとに増えていく、もしくは変化せず10,10,10,10・・・
という場合には、問題なく Yの値が 10,21,33,47・・・・ もしくは 10,20,30,40・・・と
加算されていくのですが、時間変数Timeが増えるごとに 10,9,8,7 ・・・ と減る場合には、
なぜか加算しているのにも関わらず なぜか 10,8,6,4・・・・のように減っていってしまいます。
Xの変数がマイナスの数値を出していないに、、、
|