Перейти к публикации

В ближайшее время постараюсь разобраться с картой сервера/ЛК/бб кодами

Внимание, с 14 февраля до 20 февраля могут проходить работы на сервере, где также находится лаунчсервер. В связи с этим авторизация в лаунчере может не работать

  • 0
Stinger

Как разделить разряды числа?

Вопрос

Мне нужно сделать, что бы значения больше 1000 разбивались запятыми допусти 1510 стало 1,510 и тд , думаю понятно, как это можно сделать средствами lua ?

Изменено пользователем eu_tomat
вынос вопроса в отдельную тему

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 ответов на этот вопрос

Рекомендованные сообщения

  • 0

...мне нужно сделать, что бы значения больше 1000 разбивались запятыми допусти 1510 стало 1,510 и тд , думаю понятно, как это можно сделать средствами lua ?...

 

Вот тут например предлагают вот такую симпатичную функцию юзать для этих целей:

function comma_value(n) -- credit http://richard.warburton.it
	local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
	return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end

Юзается так:

print(comma_value(9))
print(comma_value(999))
print(comma_value(1000))
print(comma_value('1333444.10'))
print(comma_value('US$1333400'))
print(comma_value('-$22333444.56'))
print(comma_value('($22333444.56)'))
print(comma_value('NEG $22333444.563'))

Выведет это:

9
999
1,000
1,333,444.10
US$1,333,400
-$22,333,444.56
($22,333,444.56)
NEG $22,333,444.563

Для записи в файл просто замени print на file:write.

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

...

Спасибо от души, эта функция нужна именно на выходе.

Изменено пользователем Totoro
цитатки сокращаем ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

attempt to call field `match' (a nil value) вот такая проблема с этой функцией)

 

 

Исправил, мой косяк, спасибо огромное за помощь Totoro

Изменено пользователем Stinger

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

attempt to call field `match' (a nil value) вот такая проблема с этой функцией)

 

Не проверял этот код именно в OpenComputers. Но проблем вроде не должно быть. Может ты опечатался где-то?

Скинь скрин этого кода из игры, и скрин ошибки отдельно.

Я сейчас попробую тоже проверить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Всё работает, после того как взял целую функцию с того сайта.
 
Вот эту:

 

 

function comma_value(amount)
local formatted = amount
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
if (k==0) then
break
end
end
return formatted
end

 

 

Видимо это связанно как то с тем, что я использую lua 5.0, кстати есть ли возможность его обновить если он вшит в консоль игры ? 

Изменено пользователем Stinger

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Если вас интересуют исходники LuaSQL модуля на C++ могу выложить, делалось под игру, работает с MSSQL SERVER любой версии.

Изменено пользователем Stinger

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×