Ага, процесс пошёл... ))
Должен извиниться, в моём примере была допущена ошибка (не сразу проявилась), также слегка оптимизировал время выполнения для небольших чисел. Исправленный вариант (прежний прошу считать недействительным):
Скрытый текст |
---|
function mf(data) local t=1000 local n=data-data%0.01 local g0=(n%1)*100 local g1=(n-n%1)%t local n=data/t local g2=n-n%1 if g2==0 then return string.format("%d.%02d", g1,g0) else n=n/t local g3=n-n%1 g2=g2%t if g3==0 then return string.format("%d %03d.%02d", g2,g1,g0) else n=n/t local g4=n-n%1 g3=g3%t if g4==0 then return string.format("%d %03d %03d.%02d", g3,g2,g1,g0) else return string.format("%d %03d %03d %03d.%02d", g4,g3,g2,g1,g0) end end end end
|
Вроде всё работает. Всё же "простая арифметика" пошустрее обработки строк, хотя внешне и не столь элегантна и загадочна.))