Перейти к содержимому
  • 0
Stinger

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

Вопрос

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

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

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


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

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

...мне нужно сделать, что бы значения больше 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.

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


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

...

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

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

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


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

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

 

 

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

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

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


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

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

 

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

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

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

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


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

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

 

 

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

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


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

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

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...