Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.09.2013, 17:31
Frankie Wilde вне форума Посмотреть профиль Отправить личное сообщение для Frankie Wilde Найти все сообщения от Frankie Wilde
  № 1  
Ответить с цитированием
Frankie Wilde

Регистрация: Jul 2007
Сообщений: 15
По умолчанию Округление чисел

Помогите советом, как округлить число до сотых?
Мне нужно округлять 158.265 -> 158.27.

Код AS3:
var number:Number = 158.265;
trace("number:", number); //number: 158.265
number = 100 * number;
trace("number:", number); //number: 15826.499999999998
P.S. Math.round(data * power) / power) не предлагать, не работает.

Старый 13.09.2013, 17:35
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Псс... есть Math.floor, ннада?

Добавлено через 1 минуту
Из справки
Цитата:
round(val:Number):Number
[статические] Округляет значение параметра val в большую или меньшую сторону до ближайшего целого числа и возвращает это значение.
Цитата:
floor(val:Number):Number
[статические] Возвращает наименьшее значение числа или выражения, заданного параметром val.
__________________
return this...

Старый 13.09.2013, 17:37
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 3  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,254
Записей в блоге: 6
Код AS3:
trace("number:", number.toFixed(2));
__________________
Дети не должны знать о своих родителях

Старый 13.09.2013, 17:45
Frankie Wilde вне форума Посмотреть профиль Отправить личное сообщение для Frankie Wilde Найти все сообщения от Frankie Wilde
  № 4  
Ответить с цитированием
Frankie Wilde

Регистрация: Jul 2007
Сообщений: 15
Меня интересует арифметическое округление. Так, чтобы 12.1234 округлялось до 12.12, а 12.3456 – до 12.35.
toFixed() отбрасывает знаки.
Код AS3:
var number:Number = 158.265;
trace("number.toFixed(2):", number.toFixed(2)); //number.toFixed(2): 158.26

Старый 13.09.2013, 17:48
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 5  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Код AS3:
Math.round(number * 100) * 0.01

Старый 13.09.2013, 17:49
Frankie Wilde вне форума Посмотреть профиль Отправить личное сообщение для Frankie Wilde Найти все сообщения от Frankie Wilde
  № 6  
Ответить с цитированием
Frankie Wilde

Регистрация: Jul 2007
Сообщений: 15
Код AS3:
Math.round(number * 100) * 0.01: 158.26
Наверняка есть какие-нибудь библиотеки для корректной работы с числами с плавающей запятой.
Нельзя же ведь до костылей с регулярочками докатываться...

Старый 13.09.2013, 17:55
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 7  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,254
Записей в блоге: 6
Ага, и библиотеку для сложения и вычитания.. Хороший способ вам привёл spirit2, чем не устраивает?
__________________
Дети не должны знать о своих родителях

Старый 13.09.2013, 18:01
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 8  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Цитата:
Сообщение от Tails Посмотреть сообщение
Ага, и библиотеку для сложения и вычитания.. Хороший способ вам привёл spirit2, чем не устраивает?
Он прав. Проверил:
Код AS3:
trace(Math.round(158.265 * 100) * 0.01);
const number:Number = 158.265 * 100;
trace(number);
trace(Math.round(number));
trace(Math.round(15826.5));
 
158.26
15826.499999999998
15826
15827

Старый 13.09.2013, 18:04
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 9  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
а чем math.round плох ?
Код AS3:
var n:Number = 158.2651;
 
function _round(num:Number, fixed:int) : Number {
	var temp:Number = Math.round(num * Math.pow(10, fixed));	
	return (temp / Math.pow(10, fixed));
}
 
trace(_round(n, 3));
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 13.09.2013, 18:11
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 10  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,254
Записей в блоге: 6
Считайте и округляйте значения изначально на тысячу больше. Пользователю показывайте со сдвигом точки вправо на 2 знака:
Код AS3:
var number:Number = 15826.5;
trace("number:", Math.round(number)*0.01);
Вы хотите показать пользователю цену в рублях и копейках? Считайте всю сумму сразу в копейках. Хотите показать формат времени: часов:минут, считайте сразу в минутах. То-есть, оперируйте наименьшими значениями, для возведения в большую - много сил не нужно.
__________________
Дети не должны знать о своих родителях

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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