Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > Не правильно работает округление


Автор: Тутанхамец 15.11.2011, 17:31
Здравствуйте. Догадываюсь, что вопрос ламерский, но поиск по инету ничего не дал. Мне надо округлять число до четвертого знака после запятой. Использую такой код:

Код

    public static function round (nNumber:Number, nRoundToInterval:Number = 1):Number
            {

                return Math.round(nNumber / nRoundToInterval) * nRoundToInterval;
            }
....


tr.text=String(round(8.0080,0.0001));



С удивлением наблюдаю в метке tr что-то вроде 8.008000000000000000001.

Функция возвращает число с хвостом, если передать ей число с нулем на конце или в котором цифр после запятой меньше, чем 4. 

Нужно округлять правильно. Как быть? 

Автор: Тутанхамец 15.11.2011, 17:55
Осенило:
Код

    public static function round (nNumber:Number, nRoundToInterval:Number = 1,nZeroCut:Number=4):Number
            {
                var c:Number;
                
                // Return the result
                c=Math.round(nNumber / nRoundToInterval) * nRoundToInterval;
                c=Number(c.toFixed(nZeroCut));
                return c;
            }
            

Так работает. Но средство дурацкое. Если кто-то подскажет более правильный вариант да еще и объяснит, почему происходит такая проблема, буду благодарен. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)