Метод NumberScript класса Actionscript'а возвращает странные значения - PullRequest
3 голосов
/ 08 января 2010

Я делаю некоторые вычисления с числами и хотел бы вывести только целое число (число без десятичных знаков).

Я думал, что метод toFixed() класса Number сделает свое дело, и это делает большую часть времени. Но довольно часто возвращаются странные значения. Вот 2 примера:

  • Number(0.002).toFixed(0) возврат "0." время Number(1.002).toFixed(0) возврат "1" (без точки)

  • Время от времени Number(0.002).toFixed(0) возвращает "1"

Нет необходимости говорить, что это не ожидаемое поведение. Я не правильно использую этот метод?

** редактировать: ** Я знаю, что просто нужно сделать int(0.002), чтобы получить 0, но я бы хотел понять это странное поведение.

Ответы [ 3 ]

7 голосов
/ 08 января 2010

Это известная ошибка. Обходной путь обхода состоит в том, чтобы использовать либо Math.round (), либо просто проверять возвращаемую строку за этот завершающий период.

См. Отчет об ошибке в JIRA здесь: http://bugs.adobe.com/jira/browse/FP-1595

1 голос
/ 08 января 2010

Я тестировал как Flex SDK 3.4, так и Flex SDK 4.0, и это похоже на ошибку, может быть, опубликовать ее на bugs.adobe.com? Хотя я думаю, что это может быть связано с Flash Player, а не с Flex.

В любом случае, если вы пытаетесь преобразовать число в строку без десятичных разрядов, вы можете использовать это в качестве обходного пути:

Math.round(theNumber).toString()

Это избавит от всех цифр после точки.

0 голосов
/ 09 декабря 2010

Просто к сведению тех, кто читает этот вопрос: очевидно, это известная ошибка , но я хотел упомянуть, что вижу эту проблему с Flex 4.0 SDK, а также с текущим Flex 4.1 SDK. На сайте ошибок Adobe я попросил уточнить , когда это было исправлено (в билете написано «Решено: 26.02.09 13:28», но не указывается, какая версия предположительно содержит исправление).

...