2012-01-23 8 views
15

私はプログラミングの初心者で、Cintオーバーフローエラーでいくつかの問題が発生しています。値が100,000+に達するたびにCintオーバーフローエラーが発生します。これは私のプログラミングクラスの紹介の練習問題でした。私が見る限り、実際にどのように行われたかを正確にコード化しましたが、実際には300,000という高い値を使用しています。誰かが私が間違っていることを説明できるか?値が100,000+を超えた場合のCintオーバーフローエラー

<script language="VBscript"> 
Option Explicit 
DIM numberofshifts, totalshift1, totalshift2, _ 
    totalshift3, grandtotal, shiftaverage 
numberofshifts=3 
totalshift1 = Inputbox("How many widgets during the first shift") 
totalshift2 = Inputbox("How many widgets during the second shift") 
totalshift3 = Inputbox("How many widgets during the third shift") 
grandtotal = cint(totalshift1) + totalshift2 + totalshift3 
shiftaverage = grandtotal/numberofshifts 
Document.write "The Total of the Three Shifts is " & grandtotal 
Document.write "<br>The Average of the Three Shifts is " & shiftaverage 
</script> 

答えて

31

CIntは、-32,768と32,767の間で処理できます。

CIntの代わりにCLngを使用してください。整数に文字列データを変換

MSDN Reference

+2

参考:[VBScriptデータ型](http://msdn.microsoft.com/en-us/library/9e7a57cf%28VS.84%29.aspx) –

1

CInt関数()CLNG()またはCDBL()を使用することによって達成することができます。 これらのデータ型のサイズ制限を覚えておくことが重要です。異なるプログラミング言語には異なる制限があります。
Here is a link to VBScript Data Types.

整数は、-32,768~32,767の整数を扱うことができます。 Longは、-2,147,483,648から2,147,483,647までの整数を処理できます。 ダブルスは、1.79769313486232E + 308までの数字を扱うことができます(これは、太陽の原子数よりも多く、1.19兆分の1です)。また、浮動小数点精度も倍精度です。つまり、doubleは非常に正確な小数点を扱うことができます。

grandtotal = cdbl(totalshift1) + totalshift2 + totalshift3 

これは、オーバーフローの問題を解消します。ユーザーが番号を入力してもエラーは処理されませんが、それは別のトピックです。

+0

これは質問に対する回答ではありません。批評をしたり、著者の説明を求めるには、自分の投稿の下にコメントを残してください。自分の投稿にいつもコメントをつけることができます。そして、十分な[評判](http://stackoverflow.com/help/whats-reputation) [任意の投稿にコメントする]ことができます(http://stackoverflow.com/help/privileges/comment)。 – emmanuel

+0

これは質問に完全に答えます。私はイントラネットを介してクロールし、ドメインマシン上のRAMを計算するスクリプトを作成しました。私の最初の試みはCIntでした。それはオーバーフローの原因となりました。それから私はロミオからこの答えを見つけ、CLngを試しました。それもすぐにあふれました。次のデータは2倍に増えたので、CDblを試してみました。それは与えられたものよりも良い答えですので、私の答えを評価するには間違っています。 –

+0

OK。ご協力ありがとうございました。 –

関連する問題