Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Препарация числа с плавающей точкой (http://www.flasher.ru/forum/showthread.php?t=144861)

PolarWolf 22.09.2010 22:29

Препарация числа с плавающей точкой
 
Есть переменная, в ней число с плавающей точкой.
Есть какие-то стандартные средства, чтобы взять отдельно целую и дробную части?

Добавлено через 26 минут
Уже сам написал метод)

f.g.programmer 22.09.2010 23:04

Код AS3:

var num:Number = 56.654;
var base:Number = Math.floor(num); // 56
var rest:Number = num - Math.floor(num); // примерно 0.654


gloomyBrain 22.09.2010 23:52

Math.floor для отрицательных чисел даст неверный результат
Проще тогда уж так
Код AS3:

package {
 
        public class CoolNumber {
 
                private var _value:Number;
 
                public function CoolNumber(value:Number = 0) {
 
                        this._value = value;
 
                }
 
                /*
                * Возвращает значение числа
                */

                public function get value():Number {
                        return this._value;
                }
 
                /*
                * Возвращает только целую часть числа
                */

                public function get integralPart():int {
                        return int(this._value % 1);
                }
 
                /*
                * Возвращает только дробную часть числа
                */

                public function get fractionalPart():Number {
                        return this._value - this.integralPart;
                }
 
 
        }
 
}


f.g.programmer 23.09.2010 00:33

Цитата:

Сообщение от gloomyBrain (Сообщение 938011)
Math.floor для отрицательных чисел даст неверный

Это зависит от того, что считать целой частью. В математике целая часть действительного числа это округление до ближайшего целого в меньшую сторону.
Так что мой пример даёт математически верный результат.
Написать класс хорошая идея, но у тебя ошибки в коде
int(this._value % 1) - всегда возвращает нуль,
для получения целой части в этом смысле достаточно: int(_value)
и соответственно дробной: _value-int(_value)

dimarik 23.09.2010 01:14

Цитата:

Сообщение от gloomyBrain (Сообщение 938011)
Math.floor для отрицательных чисел даст неверный результат

У нас самые грамотные флешеры. Опять нет повода не обратиться в jira адоба?

Добавлено через 3 минуты
Цитата:

Сообщение от f.g.programmer (Сообщение 938016)
int(this._value % 1) - всегда возвращает нуль,
для получения целой части в этом смысле достаточно: int(_value)
и соответственно дробной: _value-int(_value)

А this зачем Вы убрали в своих конструкциях? Тем самым вы нарушаете течение дзю у человека. Не забывайте об этом.

Котяра 23.09.2010 08:31

Цитата:

А this зачем Вы убрали в своих конструкциях? Тем самым вы нарушаете течение дзю у человека. Не забывайте об этом.
this убран т.к. скорей предлагается не делать это методами искомого числа,
а просто возвращать значение в функции.
Ки циркулирует нормальн)

f.g.programmer 23.09.2010 09:13

Не, всё-таки дзю я нарушил, если бы имел ввиду возвращение значения в функции, убрал бы и подчёркивание.

this я практически не использую (иногда, чтобы передать объектом ссылку на себя),
конфликтов имён избегаю за счёт правил именования переменных: _имя_поля_класса, имя_локальной_переменной

gloomyBrain 23.09.2010 17:34

@dimarik
Цитата:

Опять нет повода не обратиться в jira адоба?
Ну, как уже заметили, смотря какой результат считать верным. Math.floor, как я понимаю, округляет в меньшую сторону - так что с ним все как надо

Цитата:

но у тебя ошибки в коде
int(this._value % 1) - всегда возвращает нуль,
для получения целой части в этом смысле достаточно: int(_value)
Да, меня серьёзно закоротило =)
Конечно, %1 вернет дробную часть, а не целую


Часовой пояс GMT +4, время: 19:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.