ФорумПрограммированиеПыхнуть хотите?Готовые решения → Числа прописью с рублями, метрами и секундами

Числа прописью с рублями, метрами и секундами

  • stopkran

    Сообщения: 53 Репутация: N Группа: Кто попало

    Spritz 7 ноября 2011 г. 17:09

    Скоро Новый год, и на многих форумах всплывает вопрос, как бы написать буквами что-нибудь вроде "До Нового года осталось 60 дней" ("шестьдесят" - вместо "60"). Думал, это давно известный, быстрый гоночный велосипед. Поискал в сети - нету ничего хорошего. Есть доступ к сайтам на Битриксе, порылся там - тоже не нашёл готового решения. И вот что у меня получилось:

    http://ir2.ru/Propis.php

    Код здесь не выкладываю, так как потом нельзя будет исправить. А практика показывает, что исправлять придётся! :-) Пинать просьба без сожалений.
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 7 ноября 2011 г. 17:17, спустя 8 минут 7 секунд

    Propis::get("1002000219.02") => один миллиард два миллиона двести девятнадцать рублей 02 копейки;

    две копейки?*
    Высокоуровневое абстрактное говно
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 7 ноября 2011 г. 19:01, спустя 1 час 43 минуты 26 секунд

    Ссылку не открывал, но говорю сразу - такие функции нужно выполнять на стороне клиента, а не сервера, вебдванольно живем всё таки!
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 8 ноября 2011 г. 1:21, спустя 6 часов 20 минут 18 секунд

    Ivan, а чего на стороне клиента? А если это клиент без ява-скрипта, тот же Гуглобот?
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 8 ноября 2011 г. 1:49, спустя 27 минут 54 секунды

    Givi, ты уверен что гуглобот без яваскрипта? ))
  • stopkran

    Сообщения: 53 Репутация: N Группа: Кто попало

    Spritz 8 ноября 2011 г. 6:17, спустя 4 часа 28 минут 5 секунд

    Ivan, честно говоря, мне самому пока эти функции не нужны ни на сервере, ни на клиенте :-). Так, чисто для прикола…
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 8 ноября 2011 г. 6:29, спустя 12 минут 14 секунд

    цифрами ок
    не всё полезно, что в swap полезло
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 8 ноября 2011 г. 6:39, спустя 9 минут 37 секунд

    скрипт хуета
    не всё полезно, что в swap полезло
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 8 ноября 2011 г. 7:23, спустя 44 минуты 9 секунд

    запустить не получилось, требует хедер.пхп
    потом ошибка  Undefined offset: 1 в строке $res[] = self::num2word($group[1]);
    и ещё подозреваю некорректно будут обработаны числа 11 - 14 (11 копейка, 12 копейки)
    не всё полезно, что в swap полезло
  • stopkran

    Сообщения: 53 Репутация: N Группа: Кто попало

    Spritz 8 ноября 2011 г. 14:20, спустя 6 часов 56 минут 57 секунд


    запустить не получилось, требует хедер.пхп
    потом ошибка  Undefined offset: 1 в строке $res[] = self::num2word($group[1]);
    и ещё подозреваю некорректно будут обработаны числа 11 - 14 (11 копейка, 12 копейки)


    хедер1.пхп выводит только строки с моими примерами. Добавил комментарий об этом (что при использовании у себя хедер1.пхп надо просто удалять).

    Добавил первыми строками примеры с 11 и 12 копеек.

    Ошибка Undefined offset. Виноват, не описал входящие параметры. Скрипт принимает не всё:

    1) Функция Propis::get() принимает строку из нескольких чисел, разделённых разделителем (любым "не-числом"): если чисел 2 (например, "33.44"), скрипт считает их рублями и копейками;
    если чисел больше двух - (справа налево) секундами, минутами, часами, днями, месяцами, годами. Если число одно - будет ошибка! (не надо передавать в функцию get() одно число :-).

    2) Функция Propis::get_one(число, массив) принимает первым параметром одно число, вторым - массив из трёх "классических" plural-словоформ (типа "копейка", "копейки", "копеек").

    Ну, что они возвращают, видно на экране в примере.
  • stopkran

    Сообщения: 53 Репутация: N Группа: Кто попало

    Spritz 8 ноября 2011 г. 14:30, спустя 10 минут 28 секунд

    p.s. Только не спрашивайте про n_time_diff() - я сам плохо понимаю, как такое может работать. Но как-то работает! :-)
    Спустя 211 сек.
    две копейки?

    не сразу понял вопрос. Вывод рублей прописью может понадобиться только в бухгалтерских документах (счёте, накладной, СФ), а там копейки требуется выводить цифрами.

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