• 締切済み

Flash Lite1.1 計算の誤差

続けざまにすみません。CS3でFlash Lite1.1の計算式を作っていますが 計算式で絶対整数の答がでるはずなのに.00001くらいの誤差が出てしまうのはなぜでしょうか? AS2では、全く出ませんがFlash Lite1.1では出るので四捨五入などで なんとか整数にしています。 なんとかならないのでしょうか? 単純に1000000に0.23をかけただけでも、230000にならなかったりします。

  • Flash
  • 回答数1
  • ありがとう数1

みんなの回答

  • kura07
  • ベストアンサー率50% (30/59)
回答No.1

Flash Liteなどに限らず、全て(?)の言語で、小数の計算には誤差が生じます。 これは、パソコンが10進法ではなく2進法で扱っているためです。 必ず整数だという確信のある計算は、おっしゃるとおり、四捨五入かなんかしたほうが無難だと思います。 他の対策は、参考URLを見てください。

参考URL:
http://scriptstesting.org/syosu/index.htm
Flash-love
質問者

お礼

早速、ありがとうございます。 ああ、どこにでも誤差が出てくるんですね。 とりあえず、切り上げ、切り下げ、四捨五入で対応してみます。

関連するQ&A

  • dounle型で計算時の誤差

    今、VC++(MFC)で、15桁の数値まで表示可能な電卓アプリを作成しています。 そこで今つまずいているのが、double型で計算したとき(演算結果が小数の場合)の誤差の問題です。 とりあえず、いろいろなHPなどの情報を見たりして、誤差問題解決を下記のようにしました。 「数値の頭(左側)から16桁目を四捨五入する」 小数の場合はほとんど誤差が生じるため、計算後、計算結果が小数ならば、必ず 上記の誤差処理を行っています。 しかしこれでは、以下の場合に不具合が出てしまいます。 ・ 0.99 999 999 999 999 ÷ 10 = 本来の答えは「0.09 999 999 999 999 9」 ⇒ しかし15桁までの表示なので、本来は「0.09 999 999 999 999」と15桁まで出力     させなくてはいけないのに、16桁目の「9」を四捨五入したせいで「0.1」という表示に     なってしまう。 16桁目を四捨五入しないと誤差をとることはできないし、でも上記の例だと正しい結果 が出力されません。 どうしたらいいのか頭を悩ませています。 何か良い解決法等あれば、ご教授お願いします!!

  • Flash Lite1.1の計算式で悩んでいます

    いつも、ありがとうございます。 FlashCS3でFlash Lite1.1のモバイルコンテンツを作っています。 これまでAS2でゲームを作ってきましたが、Flash Lite1.1は、 ほとんど初めてです。 今回、下記のような計算式で還付金を計算しています。 このjyogai = _root["syotoku" + huyo + "_" + i] * 0.05; が計算されず、答えが正しく出ません。 配列、使えないでしょうか? ちなみにAS2にして試すと正しい答えが出てくるので、たぶんFlash Lite1.1では、この計算式は使えないのかと思います。 良い方法がありましたら、教えてください。 //特殊計算の際の各扶養人数に当たる所得金額を変数に代入 //扶養0人 syotoku0_0 = 24000; syotoku0_1 = 116000; syotoku0_2 = 208000; syotoku0_3 = 300000; syotoku0_4 = 392000; syotoku0_5 = 454000; syotoku0_6 = 506000; syotoku0_7 = 568000; syotoku0_8 = 630000; syotoku0_9 = 692000; syotoku0_10 = 754000; syotoku0_11 = 816000; syotoku0_12 = 878000; syotoku0_13 = 940000; syotoku0_14 = 1002000; syotoku0_15 = 1064000; syotoku0_16 = 1126000; syotoku0_17 = 1188000; syotoku0_18 = 1250000; syotoku0_19 = 1312000; //扶養1人 syotoku1_4 = 12000; syotoku1_5 = 74000; syotoku1_6 = 126000; syotoku1_7 = 188000; syotoku1_8 = 250000; syotoku1_9 = 312000; syotoku1_10 = 374000; syotoku1_11 = 436000; syotoku1_12 = 498000; syotoku1_13 = 560000; syotoku1_14 = 622000; syotoku1_15 = 684000; syotoku1_16 = 746000; syotoku1_17 = 808000; syotoku1_18 = 870000; syotoku1_19 = 932000; //扶養2人 syotoku2_11 = 56000; syotoku2_12 = 118000; syotoku2_13 = 180000; syotoku2_14 = 242000; syotoku2_15 = 304000; syotoku2_16 = 366000; syotoku2_17 = 428000; syotoku2_18 = 490000; syotoku2_19 = 552000; //扶養3人 syotoku3_17 = 48000; syotoku3_18 = 110000; syotoku3_19 = 172000; //特殊計算の場合の年収を配列にして変数に代入 for (i = 0; i < 20; i++) { _root["tokunen_" + i] = 1200000 + i * 100000; if (nensyu == _root["tokunen_" + i]) { jyogai = _root["syotoku" + huyo + "_" + i] * 0.05; taisyo = iryohi - jyogai; kanpu = taisyo * 0.05; trace (_root["tokunen_" + i]); trace (_root["syotoku" + huyo + "_" + i]); kanpukin = Math.ceil (kanpu); } }

    • ベストアンサー
    • Flash
  • 計算機の使用法

    計算機を使った計算のやり方について質問します。 答えを小数点以下第5位を四捨五入した小数点第4位までの小数 で表せ。という問題があって、答えは 2/3√3になります。 こういう場合は2を3√3の計算した数値の小数第5位を四捨五入したもので割ればいいのですか?それとも、小数第10位くらいまで計算した値で割って、最終的に第5位を四捨五入すればいいのでしょうか? この場合はいいですが、複雑な計算になると、四捨五入したものどうしをたくさん計算すれば最終的な答えにだいぶ誤差が生まれる気がしまて。すみません単純な質問をして。

  • 計算結果の誤差について・・・PC内部で何が起こってるの??

    FLASH初心者です。 「毎フレーム0.1加算し、表示する」というフラッシュを作りました。 すると必ず、決まった値になった時に誤差が生じてしまいます。 フリーソフトのparafla!を使用しているのですが、フリーソフトの限界って事ですか?? はたまた単純にPCの処理能力不足?? コンピュータってすべて二進法で計算しているんですよね!?そこに問題があるのでしょうか?? 四捨五入すれば全く問題ないのですが気になります。 どなたか教えてください(>_<)

  • 概数計算で困っています。

    概数計算の問題です。 63.2 - 3.57を計算しなさい。という問題で、数値は測定にとって得られたもので、下一桁に若干の誤差が含まれるそうです。 私は、そのまま計算をし、59.63という数字が出てきました。 ここで、誤差が生まれるので、答えを四捨五入をして、59.6にしました。 答案用紙が返ってきましたが、×でした。 自分では、問題点を見つけることができません。 教えてください。 解かりにくい文章で申し訳ありませんが、よろしくお願いします。

  • 重量の丸め計算が全く分からず困っています。

    うまく説明できなかったらすいません。 会社で、鉄筋の重量計算をするように言われました。 が、計算方法が全然分かりません。 ☆有効数字3桁にする。 ・4桁目が5ではない場合  →整数部分が2桁の時・・・四捨五入して3桁にする  →整数部分が既に3桁の時・・・四捨五入する ・4桁目が5の場合  →5の前が偶数の時・・・切り捨て  →5の前が奇数の時・・・切り上げ  →5の後に数字が続く時・・・四捨五入して3桁にする  →整数部分が既に3桁の時・・・上記の考え方と同じ(要は四捨五入) エクセル200を使用しています。 非常に困っています。 よろしくお願いします!!!

  • EXCELで税込税抜き金額を計算する時に発生する、合計金額の誤差について

    【教えてください】 エクセルで税込金額から税抜き金額を自動計算し、それぞれ、複数の金額を合計すると、数円の誤差が生じてしましまいす。 合計誤差を0にするためには、(税込合計=税抜き合計×1.05にするためには)どのようにすればよいのでしょうか。 現在は一度自動計算し、誤差を手入力で修正しています。 何かいい方法があれば教えてください。 ちなみに、税抜き金額は税込金額÷1.05で自動計算しています。(小数点一桁で四捨五入し、整数にしています。) よろしくお願い致します。

  • エクセルについて教えてください。

    エクセルは独学で覚えたので、曖昧に覚えてしまい困っています。よろしくお願いします。 エクセルの関数で ROUND関数があります。 ROUND は四捨五入 になると思いますが、 ある計算を ROUND でやり、答えを 四捨五入して整数で出します。 同じROUNDを使って、その計算を 5つ程度して その 出た(5つの) 答えを合計(SUM)します。 私はエクセルにあまり詳しくないので、分かりませんが、単純に ROUNDで整数にしたのだから、合計も整数で合うはずだと思うのですが、 なぜか、合計が 1 違う場合が多々あります。 説明が分かりにくくてすみません。 例えば、合計が 本来は 125  と ならなければならないのに、 ROUNDで出した 答えを すべて 合計(SUM)すると  126 とか 124 と 1つ ずれて表示されてしまいます。 私のROUNDに関する覚え方が間違っているのでしょうか? それから、ROUNDでだした 答えを 整数のままで足し算をして、合計が合うように計算をするにはどうしたらよいでしょうか? よろしくお願いします。

  • 四捨五入して計算をする方法で謎があるんですが?

    足し算だと12+8を片方の数字を四捨五入して12+10=22 22-2=20にというふうになるじゃないですか。 *12+8=12+10-2=20 引き算だと52-7を片方の数字を四捨五入して52-10=42 42+3=45 *52-7=52-10+3=45 といった通りに四捨五入計算すれば簡単に計算できるじゃないですか。 もしかして掛け算と割り算も四捨五入計算できるのですか? 掛け算と割り算は四捨五入計算で答えを出せるのかがわかりません? もしできるんだったら計算式も詳しく教えてください!

  • 技能検定の計算問題

    技能検定の計算問題の答え方について教えて頂きたいのですが “小数点第何位を四捨五入して”とかという注意書きがある問題があるのですが単純計算(例えば 数値×数値)で答えが出るものはその答えを四捨五入すればいいのですが、複雑な計算(複数の計算で出した答えをさらに計算する)の場合途中の答えの四捨五入の仕方によって最終の答えが多少変わってくる場合があります。 この場合答えには、ある程度の有効範囲があるのでしょうか? または四捨五入の仕方に決まりがあるのでしょうか? 知っておられる方お願いします。

専門家に質問してみよう