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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.08.2011, 02:03
54321go вне форума Посмотреть профиль Отправить личное сообщение для 54321go Найти все сообщения от 54321go
  № 1  
Ответить с цитированием
54321go

Регистрация: Sep 2006
Сообщений: 453
По умолчанию 100000 в 100 000

Как сделать, из числа 100000 строку 100 000, то есть с пробелом? Подскажите функцию

Старый 26.08.2011, 02:15
t4arty вне форума Посмотреть профиль Отправить личное сообщение для t4arty Найти все сообщения от t4arty
  № 2  
Ответить с цитированием
t4arty

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
писать свою

Старый 26.08.2011, 02:29
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Вариант вроде такого неправильный:
Код AS3:
var a:String=String(num);
var l:int=a.length / 3;
var b:String="";
for (var i:int=0; i<l; i++){
b+=b.substr(i*3,3)+" ";
}
Потому что парсит слева-направо. Надо наоборот.
Вариант 2:
Код AS3:
var a:int=num;
var str:String="";
var c:int=0;
while (a){
if (c++ === 3) str=" "+str;
str=String(a%10)+str;
a*=0.1;
}
Вот так мужественно, но расточительно с точки зрения ресурсов... Надо бы отцеплять по 3 разряда и делить разом на 1000, хех...
Вариант 3:
Код AS3:
var a:int=num;
var str:String="";
var c:int=0;
while (a){
if (a >= 1000) a=" "+a;
str=String(a%1000)+str;
a*=0.001;
}
Но как-то пробел добавит спереди, надо ещё хитрее.
Но меня беспокоит производительность. А вдруг число 100000000000000000?
Вот в ByteArray если писать циферки, не думая, а потом считать задом наперед, вот да...
P.S. пол 5 утра, код писался здесь и не тестился. Почти уверен, что нерабочий... Но Вы дерзайте, я вот в Вас верю.

Старый 26.08.2011, 05:55
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 4  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Как-то так. На производительность не проверял.
Код AS1/AS2:
function separateDigitStr(str : String, delimiter : String = ".", count : int = 3):String{
      // assert
      if(count < 1){
        throw new ArgumentError("Количество знаков между разделителями должно быть больше нуля.");
      }
      //
      var nSeparates : uint = Math.ceil(str.length/count)-1;
      var shift      : uint = str.length%count;
      var head       : String = "";
 
      if(nSeparates && shift){
        head = str.substr(0, shift) + delimiter 
        str = str.substr(shift);
        nSeparates--;
      }
 
      for(var i : int = 0; i < nSeparates; i++){
        str = str.substr(0, count*(i+1) + i) + delimiter + str.substr(count*(i+1) + i);  
      }
 
      return head + str;
}
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 26.08.2011 в 06:05.
Старый 26.08.2011, 09:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
http://www.flasher.ru/forum/showpost...70&postcount=5

з. Ы. Не учитывает плавающую запятую и знак.


Последний раз редактировалось etc; 26.08.2011 в 09:40.
Старый 26.08.2011, 11:36
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
private function addSpaces(input:Number):String
{
	var result:String = "";
	for (; input > 1; input /= 1000)
		result = int(input % 1000) + " " + result;
	return result;
}
Да, конечно, есть минусы - нужно делать отдельную проверку для дробных и отрицательных - но это уже, как говорится - тема для самостоятельных практических занятий
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 26.08.2011 в 11:43.
Старый 26.08.2011, 11:39
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 7  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
А что такое input? Там переменная нигде не потерялась?

Старый 26.08.2011, 11:41
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
input - аргумент функции. Простые типы передаются по значению, так что можно изменять / присваивать, если хочется.
__________________
Hell is the possibility of sanity

Старый 26.08.2011, 11:54
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 9  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
Ой, что-то аргумент не заметил.
Смущает конструкция
for (; input > 1; input /= 1000)


Последний раз редактировалось arkadattx; 26.08.2011 в 11:57.
Старый 26.08.2011, 12:00
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 10  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Код:
for (; input > 1; input /= 1000)
За ненадобностью опущено объявление итератора цикла. Точно также допустимо опускать и прочее, вот, например, бесконечный цикл:
Код:
for ( ; ; ) { ... }

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

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

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


 


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


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