eval()を使わずに数値を取得し計算する方法

このQ&Aのポイント
  • eval()を使わずに数値を取得し計算する方法について教えてください。
  • プログラムを作成している際に、eval()を使わずに数値を取得し計算する方法が知りたいです。
  • 現在、数値計算をするプログラムでeval()を使用していますが、eval()を使わずに数値を取得し計算する方法を知りたいです。
回答を見る
  • ベストアンサー

eval()を使わずに数値を取得し計算する方法

ある数値計算をするプログラムを作っています そのプログラムではeval()を使っています 某書籍や色々javariptを勉強しているサイトを参考にさせていただいてますが そこではeval()はあんまり使うなとか、普通は使わないとか書かれていました 多用すると動作が重くなるとか、危険だから何とか… しかし、自分が作成しているプログラムではevalがどうしても必要となってしまいます 簡単なプログラム例です function tas(){ gk=0 ~~~~省略~~~~ gk=eval(a.value)+eval(b.value); aとbに数字を入力して足し算の答えをを出力するプログラムの一部です (この時、答えの出力先はプログラムを端折っていますが用意されています) a=1 b=2に入力したとして この時eval()を使わずa(b).valueのみにすると 答えが12と連なって表示されてしまいます ただこの理由は自分でも解っています そしてこれを数値として取得し計算させるためにはeval()が必要となってしまいます 現状、自分の知識と経験では… もしeval()を使わずに数値を取得し計算する方法があれば教えて下さい

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

evalは文字列をjavascriptの式として評価するからコストが大きいということですかね。 parseInt(a.value)   整数型 parseFloat(a.value)  浮動小数点型 を使うか、a.value-0 して暗黙の型変換を行わせるか、かな。

kazamitidx
質問者

お礼

回答ありがとうございます 勉強になります

その他の回答 (2)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2
kazamitidx
質問者

お礼

回答ありがとうございます 勉強になります

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

この質問も、よう わからん。 >ただこの理由は自分でも解っています わかってるなら、違うやり方でやっていると思うが・・・ >eval()はあんまり使うなとか、普通は使わないとか書かれていました これは、だれが言ったのでしょう。そんな文献みたことありません。よくエセ達人が、ブログなどに書いてありますが、エセであることは明白。 よく習いたての人にたいしては、公式のような感じで、教える人がいるが、へたな人は、表現方法(ボキャブラリー)が乏しいだけ。 たくさん人の作ったの見れば、あ、なるほどこんな手があったか、て気がつくもの。まあ、頭の柔軟性て やつですね(気がつく頭が無いと気がつきませんがね。よくこれ何やっているのかわからない。なんて投稿している人がいるが、そのような人は向いていないんだよなあ。才能が無いと言う事。さっさと違う道にいかないと)。 わかっていないから、 >eval()が必要となってしまいます といいはっているだけ。

関連するQ&A

  • 数値が入力されたときだけ計算する方法はありますか

    エクセル2003です。 A1=B1-C1の計算式で  C1には数値が入力されていて B1に後で数値を入力するとき A1に計算結果が-C1とされずに B1に数値が入力されたときだけ 計算する方法はありますか 目的は A5にあるAI:A4の合計欄にB1に数値が入力されていないときの -の数値を反映させたくないのです。

  • 入力した数値になるよう組み合わせを計算したい

    A.5~500までの数値を入力 B.1~100までの数値のうち、5つの数値を組み合わせ、Aで入力した値と同様の値となるようにする という計算を行うプログラムを組もうとしているのですが、どういった計算を行えばよいのか分かりません。 ご存知の方いらっしゃいましたらアドバイスお願いします。 ちなみにこれは学校の課題ではありません。個人的な興味です。

  • 計算式が作れなくて困っています

    A+B=10と、答えの10は決まっているのですが、10を導き出す足し算の組み合わせをAとBに入力したいのです。(例)Aのセルに1を入力したら自動的にBには9が出るように、Bに1を入力してもAに9が出てほしい。 答えとなる数値が大きくても、A+BがA+B+C+D=98などセルが増えても 行える方法が知りたいので、どなたかお助け下さい。

  • C言語の外部からの変数取得方法について

     現在C言語の勉強を始めました。C言語を使用してプログラムを作成しています。コマンドプロンプトで、プログラムを実行する際に、「a = 」というようにたずねて、aの数値を取得して、プログラムで計算できるようにしたいのですが、getsではうまくいきませんでした。 例としては以下のようにしたいのです。 【コマンドプロンプトにて】 a + b = a =  //5と入力 b = //3と入力 計算結果は8です。 どのようにしたらプログラム実行中に数値を取得できますか。

  • evalで数値に変換してる筈なのですが・・・NaN

    今、JavaScriptを勉強中なのですが… Nanと言う表示が出てしまうと言う事は数値じゃないと言う事ですよね? どうしても一人の力では脱出できませんのでお助けください! どなたか是非ご教授よろしくお願いします。 var item=["N-01ネックレス","N-02ネックレス","EA-01イヤリング","KS-01携帯ストラップ"]; var g=[10,15,20,30]; var p=[1000,800,600,600]; function n01(){ var gtotal=0; var guram=0; for(a=0;a<4;a++) { if(document.form.elements[a].checked){ document.form.elements[11+(a*3)].value=item[a]; guram=eval(document.form.elements[12+(a*3)].value=g[a]); price=eval(document.form.elements[13+(a*3)].value=p[a]); }else{ document.form.elements[11+(a*3)].value=""; guram=eval(document.form.elements[12+(a*3)].value=0); price=eval(document.form.elements[13+(a*3)].value=0); } gtotal=gtotal+guram[a]; } document.form.elements[23].value=gtotal; }

  • [JAVA]evalで文字列を計算式に!

    こんにちわぁ♪ Javascriptに「eval」というコマンドがあると思います。 これは、文字列を計算式として変換するものです。 例えば String SHIKI = "A + B" という文字列があり、evalを使ってやると その時点で文字列ではなくなり、 普通に、 A=3; B=4; String C = eval(SHIKI); と計算式にすることができます(使い方がちがうかもしれませんが)。 しかし、JAVAスクリプトではあるこのコマンドが JAVAでは見つかりません。 これと同等のコマンド、JAVAにありますか?

    • ベストアンサー
    • Java
  • Excel・10000時間以上の入力方法

    Excel2000を使っています。 10000時間以上の入力方法がわからなくて困っています。どうか、良きアドバイスをお願いします。 内容は”A時間+B時間”の単純な時間の足し算をする際、セルの書式を”[h]:mm”にし、10000時間”未満”を入力すると、数値として認識してくれるのですが、10000時間”以上”を入力すると文字として認識されてしまい、結果として”#VALUE!”になってしまうのです。 書式がいけないのでしょうか? それともExcel自体が10000時間以上の入力が出来ないのでしょうか? ちなみに、A・B共に10000時間”未満”で、足し算の答えが10000時間”以上”になる場合は、同じ書式で数値として10000時間”以上”の答えが計算されます。

  • フォームに入力された値を計算する方法

    私はまったくの初心者なのですがどなたか教えて下さい。 ●A,B,Cという3つの入力フォームがあるとします。 Aのフォームに入力された数字は「A÷20」という値に、 Bのフォームに入力された数字はそのまま、 Cのフォームに入力された数字は「C×10」という値に変更して、 (A+C)÷B×30という計算を行なって、その答えを Dのフォームへ表示するというシステムをcgiやphpで作りたいのです。 あれこれと試行錯誤しながら、javascriptでなんとか出来たんですが… どなたか教えて頂けませんか? function keiri() { a = document.takeko.case.value; a = eval(a); a = a / 20 b = document.takeko.time.value; b = eval(b); c = document.takeko.days.value; c = eval(c); c = c * 10 ans = (a + c) / c * 30; document.spec.result.value = ans; } <form name="takeko"> <input name="case" type="text" size="12"> <input name="time" type="text" size="12"> <input name="days" type="text" size="12"> <input name="button" type="button" onClick="keiri()" value="CLICK"> <input name="result" type="text" size="12"> <br></form>

    • 締切済み
    • PHP
  • 文字列を数式に変換して計算する方法

    エクセルで計算を行なうときにA1のセルに計算式、B1のセルに答えの数値を表したいときにこれまではA1に例えば1+1を入力してそれをコピーしてB1に貼り付けて その前に=を入力していたのですが、計算式をA1に入力した段階でB1に答えが出る方法がありましたら教えてください。なにぶんにも初心者なのでよろしくお願いします。ソフトはofficeXPです。

  • 文字を数値として認識させる方法

    列で足し算をしたいのですが、その列に文字が含まれています。 その文字は無視して、足し算をしたいのですが、文字の入っているセルを書式設定で「数値」にしても、VALUE!となって計算できません。 入っている文字を「0」とみなして、残りのセルに入ってる数字の足し算をができれば一番いいのですが、どなたか方法をご教示いただけないでしょうか? よろしくお願いします。

専門家に質問してみよう