WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Javaスプリクトの計算式

0:[投稿] 理名 [2006/05/19 15:44 ] [環境:IE6,XP Javaスプリクト]

ゲームで敵に与えるダメージを計算するJavaスプリクトを作りました。
計算式は下のようになっているのですが

       case 1:        // 計算式1
        _ans = Math.floor((_魔力-49)*25.1+49) ;

この答えを元に、敵の体力−計算式1の答えと計算した場合に
与えるダメージと、何回で敵が沈むかというのを
フォームに出るようにしています。
それと、1回で沈む魔力を表示するようにしました。

       document.calForm.damage.value = Math.floor((_ans-_防御)*(_魔法*0.01)) <= 0 ? 'ノーダメージ' : Math.floor((_ans-_防御)*(_魔法*0.01)) ;

       document.calForm.count.value  = Math.ceil( _体力/((_ans-_防御)*(_魔法*0.01))) <= 0 ? '不可能' : Math.ceil( _体力/((_ans-_防御)*(_魔法*0.01))) ;

       document.calForm.hit.value  = Math.floor(( _体力/(_魔法*0.01)+_防御)/27.8+49) ;

本来は切り捨てにしたいのですが、countの式をMath.floorにすると
動かなくなってしまいます(エラーが表示されます)

計算式1で使う魔力は手入力フォームがありまして
例えばそこに100と入力した時に、countのフォームには1と出たとします。
しかし、hitのフォームには101と表示されて
誤差が生じてしまいます。この誤差を無くしたいのですが
どうすれば良いのかわからず・・・
アドバイスをお願いします。


1:[質問] 理名 [2006/05/19 15:50 ]

最後の部分がわかりにくいので追記します。
手入力フォームに100(魔力)を入力
hit(1回で沈む魔力)フォームには101と表示されるので、
本来、countのフォームには2と表示されなければならないのですが
切り上げのせいで、100の時点でcountに1と表示されてしまいます。
これを回避したいのですが、どうしたら良いのかわかりません。

わかりにくい質問で申し訳ありませんが、
アドバイスを頂けると助かります。
よろしくお願いします。


2:[回答] m035 [2006/05/19 22:36 ][URL]

状況を再現できないのでなんともいえません。
魔法、防御、体力、魔力をいくらにするとエラーになるのでしょうか。
具体的な各数値の例かurlをあげてください。


3:[回答] 神崎 [2006/05/20 10:28 ]

計算式とかは見てませんが、0で割っていたり、四捨五入や切り捨てのタイミングの違いで誤差が出ることはありますね。
ご参考まで。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]