AS3 добавление 1 (+1) не работает на приведение строки к числу? - PullRequest
1 голос
/ 25 января 2011

только учится as3 для flex.я пытаюсь сделать это:

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

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

Я пробовал разные способы составления выражения, и независимо от того, что я делаю, результат всегда равен 10150125903517628, а не 10150125903517629

У кого-нибудь есть идеи ??!спасибо!

1 Ответ

10 голосов
/ 25 января 2011

Все числа в JavaScript / ActionScript имеют двойную точность IEEE-754 с плавающей точкой. Они используют 64-разрядное двоичное число для представления вашего десятичного числа и имеют точность примерно 16 или 17 десятичных знаков.

Вы столкнулись с лимитом этого формата со своим 17-значным номером. Внутреннее двоичное представление 10150125903517628 ничем не отличается от внутреннего 10150125903517629, поэтому вы не видите никакой разницы при добавлении 1.

Если, однако, вы добавите 2, то вы (должны?) Увидите результат как 10150125903517630, потому что достаточно «шага» для изменения внутреннего двоичного представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...