Уменьшить количество десятичных знаков - PullRequest
1 голос
/ 03 августа 2011

В AS3 из подразделения я получаю такой номер: 0.9130406010219044.Есть ли способ уменьшить количество десятичных знаков (кроме умножения этого числа на миллион)?Есть ли способ уменьшить числа ДО ПЕРЕД делением?

Ответы [ 6 ]

5 голосов
/ 03 августа 2011

Получил следующую функцию из этой ссылки , которая округляется до произвольного числа десятичных знаков:

public function trim(theNumber:Number, decPlaces:Number) : Number {
    if (decPlaces >= 0) {
        var temp:Number = Math.pow(10, decPlaces);
        return Math.round(theNumber * temp) / temp;
    }

    return theNumber;
} 

// Round a number to two decimal places trace(trim(1.12645, 2));
// Displays: 1.13

Примечание: я немного изменил определение функции, добавив типы. Смотрите ссылку для объяснения и оригинального исходного кода. Также он вернул theNumber, если decPlaces меньше или равно нулю.

3 голосов
/ 03 августа 2011
var myNumber:Number = 74.559832;

trace(myNumber.toFixed(4)); //74.5598
trace(myNumber.toFixed(2)); //74.56

AS3 Документация: Номер класса

2 голосов
/ 04 августа 2011

Если вы просто хотите отобразить результат (вы не указали), тогда простой бит манипуляции со строками даст самый быстрый результат:

0.9130406010219044.toString().substr(0, 4);  // 0.91
1 голос
/ 03 августа 2011

Попробуйте некоторые ответы здесь для определения размера:

Как работать с точностью чисел в ActionScript?

Если вы используете NumberFormatter, обязательно укажитеокругление (скорее всего, вы хотите ближайший).

1 голос
/ 03 августа 2011

Взгляните на NumberFormatter .fractionalDigits

Или, если вы работаете во Flex: mx: NumberFormatter .precision / s: NumberFormatter .fractionalDigits

0 голосов
/ 23 января 2014

Если вам нужен Number как результат и производительность, я бы сказал, что это решение более эффективно, чем Math.pow (). Если вам нужно 3 десятичных знака, просто измените 100 на 1000.

var myNumber:Number = 3.553366582;
myNumber = (( myNumber * 100 + 0.5)  >> 0) / 100;
//trace = 3.55

, демонстрирующее округление:

var myNumber:Number = 3.557366582;
myNumber = (( myNumber * 100 + 0.5)  >> 0) / 100;
//trace = 3.56

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

Number(3).toFixed(2); // trace 3.00 so it has to be a String. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...