ツ・チ・ノ・コ
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

ツ・チ・ノ・コ

2013-11-26 22:16
    他人に説明する気はあまりなくて自分が納得する為用にちょいちょい調べてみた。

    ・Flashについて
    使用できるデータ型
    小数点以下の値を扱える型は
    Number型のみで倍精度浮動小数点数である。

    C#にあるDecimalと違い算数的感覚で扱うと痛い目を見る型である。

    ・浮動小数点数について
    浮動小数点数の説明をPHPのマニュアルから抜粋

    近似値であるので特定の条件化で以下の状態が発生する。
    (0.1+0.7) * 10 を小数点以下で切り捨てると答えはなんとなるか。

    答えは 7

    8を期待するのだけど実際は7.999999999999999111...みたいな近似値で格納されているので単純に切り捨てちゃうと答えは7になっちゃう。

    ただしこれが発生するのは結構まれなので見逃しガチ。(ツチノコがツチノコであるゆえん)

    近似値である特性上処理方法を間違うとその処理の境界線で結果が意図しないものとなる可能性がある。

    MMDerはPMDEでボーンモーフ作って回転の値に1いれると勝手に0.99999999999999となるのでこれ経験できます。PMXEに持っていくと1ってなってるのよ?w


    ・処理系の冗長化
    表示部分と状態部分との計算ロジックが別々で作成されている。
    カットインで表示部分のずれがある報告があがっている事からこれは明らか。

    従って表示部分と状態部分が同期されている事は保障されない。


    ・状態部分のロジック
    WIKIより
    計算ロジックには小数点以下が含まれると思われる算定式の為、Number型で処理していると推測できる。

    従ってNumber型が持つ近似誤差についての問題は当然含有


    ・近似値の処理における作成者の信頼性
    表示部分/演習部分等でNumber型の処理ミスによる問題が発生している。
    また、それらに対する修正アプローチは今の所ない。

    従って近似値処理に対する信頼性はなし。


    以上の事からツチノコは存在を認めるしかないと推測。


    とはいえ発生率は押して知るべしだし発生ポイントも境界線なのでその部分に入ったら黄色信号と思えばいいかな?



    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。