2011-01-25 3 views
1

フレックスのas3を学習するだけです。私はこれを実行しようとしています:AS3はNumberに文字列キャストに作用しない1(+1)を追加しますか?

var someNumber:String = "10150125903517628"; //this is the actual number i noticed the issue with 

var result:String = String(Number(someNumber) + 1); 

私は一緒に式を入れてのさまざまな方法を試してみたと私は結果をやるように見える何に関係なく常に10150125903517628に等しいのではなく10150125903517629

誰もがいずれかを持っていますアイデア??ありがとう!

答えて

10

JavaScript/ActionScriptの数字は、実質的に倍精度のIEEE-754浮動小数点数です。これらは64ビットの2進数を使用して小数点を表し、およそ16または17桁の精度を持ちます。

あなたは17桁の数字でその形式の制限値に耐えました。 10150125903517628の内部バイナリ表現は10150125903517629のものと変わりません。なぜなら、1を追加したときに何の違いも見られないからです。

しかし、2を追加すると、 10150125903517630を使用すると、内部バイナリ表現が変更されるのに十分な「ステップ」があるためです。

+0

大丈夫ですが、この数字に2を加算するのではなく、1を加算したいと考えています。出来ますか?別のタイプかもしれない?ありがとう! – toddm

+0

@toddm:いいえ、カスタムコードなしではできません。私が言ったように、すべてのJS/AS番号は64ビットIEEE-754浮動小数点数であり、10150125903517628と10150125903517629 *はその表現で同じ数字*です。利用可能なBigIntegerライブラリの1つをチェックアウトすることができます。例えば、jsbn:http://www-cs-students.stanford.edu/~tjw/jsbn/ – LukeH

+0

蘭LukeHの答えはas3termで動作します。 http://img715.imageshack.us/img715/1516/17digitnumber.jpg – Ryan

関連する問題