Разделитель разрядов в QTABLE_DOUBLE_TYPE

Страницы: 1
RSS
Разделитель разрядов в QTABLE_DOUBLE_TYPE
 
Разделитель разрядов (он же - "сепаратор" или просто "пробел") в QTABLE_DOUBLE_TYPE - забыли, не захотели или не смогли?
 
Здравствуйте,
Автоматическая установка разделителей для QLUA таблиц не поддерживается.
Вы можете самостоятельно добавить разделители следующей функцией:
Код
function comma_value(n)
   local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
   return left..(num:reverse():gsub('(%d%d%d)','%1 '):reverse())..right
end
 
    Да, спасибо, действительно короткое по записи решение. Мне мозгов сразу не хватило столь эффектно с шаблонами разобраться - получалось значительно длиннее. Но изначально я пошёл иным, "арифметическим" путём. По записи также длиннее, но выполняется процентов на 10-15 быстрее (не критично, и всё же...):

-- Вывод в "денежном формате"
-- (2 знака после запятой + разделитель разрядов, до 1 трлн.):
function mf(data)
    local g0=data%1000
     local n=data/1000
     local g1=(n-n%1)%1000
     n=n/1000
     local g2=(n-n%1)%1000
     n=n/1000
     local g3=(n-n%1)%1000
     if (g3==0)and(g2==0)and(g1==0) then
           return string.format("%.2f", g0)
     elseif (g3==0)and(g2==0) then
           return string.format("%1.f %.2f", g1, g0)
     elseif (g3==0) then
           return string.format("%1.f %1.f %.2f", g2, g1, g0)
     else
           return string.format("%1.f %1.f %1.f %.2f", g3, g2, g1, g0)
     end
end

А вообще, начинающему луа-программеру вот таких простых вещей и не хватает: как циферки разделить, как табличку вывести, чтобы можно было её на место подвинуть, размерчик подогнать, и при следующем пуске она "ни ногой" и т. п. - то, что в "купайле" делалось на автомате, было скрыто от глаз пользователя. Ваш же пример в документации с вращающимися "нунчаками" - на мой взгляд, не слишком удачен. Ну это так, мысли вслух... Ещё раз спасибо за решение.
 
Другой вариант
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Ага, процесс пошёл... ))
Должен извиниться, в моём примере была допущена ошибка (не сразу проявилась), также слегка оптимизировал время выполнения для небольших чисел. Исправленный вариант (прежний прошу считать недействительным):
Скрытый текст
Вроде всё работает. Всё же "простая арифметика" пошустрее обработки строк, хотя внешне и не столь элегантна и загадочна.))
Страницы: 1
Читают тему
Наверх