Преобразование числа

Вопросы, пожелания и предложения связанные с конструктором Руна
Nikxdrummer
Сообщения: 12
Зарегистрирован: 27 сен 2016, 09:56

Преобразование числа

Сообщение Nikxdrummer » 27 сен 2016, 09:58

Здравствуйте, возникла проблема с функцией, точнее отсутствие нужной. Имеется число 123,45, нужно перевести его в денежный формат типа 123 (Сто двадцать три) рубля 45 копеек.

Аватара пользователя
vladimir.runa
Сообщения: 48
Зарегистрирован: 26 сен 2016, 18:32
Контактная информация:

Re: Преобразование числа

Сообщение vladimir.runa » 27 сен 2016, 10:30

Такой функции нет, но можно получить требуемый результат при помощи функций.
Целую часть числа можно получить при помощи NumW(), значение которой поместить в скобки. Дробную можно выделить при помощи функций -1() и -2(), которые получают значение поля с правого края:

Код: Выделить всё

[-2(Число)][-1(Число)]
И ещё получить окончание для слова "копейки". Сначала выделить через составное последнюю цифру, поместить её в число, а затем составить ряд функций из String(), которые будут возвращать значение окончания для слова "копе": 1 - йка, 2-4 - йки, 5-0 - "еек".

Nikxdrummer
Сообщения: 12
Зарегистрирован: 27 сен 2016, 09:56

Re: Преобразование числа

Сообщение Nikxdrummer » 27 сен 2016, 10:45

А каким образом выделить целую часть с цифровом виде, чтобы подставить перед скобками?

Nikxdrummer
Сообщения: 12
Зарегистрирован: 27 сен 2016, 09:56

Re: Преобразование числа

Сообщение Nikxdrummer » 27 сен 2016, 10:57

vladimir.runa писал(а):Такой функции нет, но можно получить требуемый результат при помощи функций.
Целую часть числа можно получить при помощи NumW(), значение которой поместить в скобки. Дробную можно выделить при помощи функций -1() и -2(), которые получают значение поля с правого края:

Код: Выделить всё

[-2(Число)][-1(Число)]
И ещё получить окончание для слова "копейки". Сначала выделить через составное последнюю цифру, поместить её в число, а затем составить ряд функций из String(), которые будут возвращать значение окончания для слова "копе": 1 - йка, 2-4 - йки, 5-0 - "еек".
По поводу слова "копейки", слишком сложно, можно ли как то проще подсказать или более детально все шаги расписать?!)

Аватара пользователя
vladimir.runa
Сообщения: 48
Зарегистрирован: 26 сен 2016, 18:32
Контактная информация:

Re: Преобразование числа

Сообщение vladimir.runa » 27 сен 2016, 11:06

Nikxdrummer писал(а):А каким образом выделить целую часть с цифровом виде, чтобы подставить перед скобками?
Да, если копировать в другое поле, где нет дробной части, то значение будет округляться по общему правилу в большую сторону.
Тут тоже поможет составное поле, в которое надо вынести значения всех цифр в обратном порядке, начиная слева от запятой. И учесть максимальную длину числа, которое может быть, к примеру так:

Код: Выделить всё

...[-10(Число)][-9(Число)][-8(Число)][-7(Число)][-6(Число)][-5(Число)][-4(Число)]

Nikxdrummer
Сообщения: 12
Зарегистрирован: 27 сен 2016, 09:56

Re: Преобразование числа

Сообщение Nikxdrummer » 27 сен 2016, 13:20

Nikxdrummer писал(а):
vladimir.runa писал(а):Такой функции нет, но можно получить требуемый результат при помощи функций.
Целую часть числа можно получить при помощи NumW(), значение которой поместить в скобки. Дробную можно выделить при помощи функций -1() и -2(), которые получают значение поля с правого края:

Код: Выделить всё

[-2(Число)][-1(Число)]
И ещё получить окончание для слова "копейки". Сначала выделить через составное последнюю цифру, поместить её в число, а затем составить ряд функций из String(), которые будут возвращать значение окончания для слова "копе": 1 - йка, 2-4 - йки, 5-0 - "еек".
По поводу слова "копейки", слишком сложно, можно ли как то проще подсказать или более детально все шаги расписать?!)
Не получается поместить число в поле "число", вставляю в "Копия из" [Название составного поля] и в итоге получаю число 0, хотя в результате расчета составного поля число 8 получаем.

Аватара пользователя
Ekaterina.mk-plus
Администратор
Сообщения: 12
Зарегистрирован: 22 сен 2016, 09:25
Контактная информация:

Re: Преобразование числа

Сообщение Ekaterina.mk-plus » 27 сен 2016, 14:35

Nikxdrummer писал(а):
Nikxdrummer писал(а):
vladimir.runa писал(а):Такой функции нет, но можно получить требуемый результат при помощи функций.
Целую часть числа можно получить при помощи NumW(), значение которой поместить в скобки. Дробную можно выделить при помощи функций -1() и -2(), которые получают значение поля с правого края:

Код: Выделить всё

[-2(Число)][-1(Число)]
И ещё получить окончание для слова "копейки". Сначала выделить через составное последнюю цифру, поместить её в число, а затем составить ряд функций из String(), которые будут возвращать значение окончания для слова "копе": 1 - йка, 2-4 - йки, 5-0 - "еек".
По поводу слова "копейки", слишком сложно, можно ли как то проще подсказать или более детально все шаги расписать?!)
Не получается поместить число в поле "число", вставляю в "Копия из" [Название составного поля] и в итоге получаю число 0, хотя в результате расчета составного поля число 8 получаем.
Вот пример: Создаем Объект назовем его например "Преобразование числа", далее добавляем поле Число (Имя поля оставляем Число), затем ставим значение знаков после запятой - 2, добавляем поле Составное (Имя поля также не меняем) вписываем следующую формулу:

Код: Выделить всё

[-10(Число)][-9(Число)][-8(Число)][-7(Число)][-6(Число)][-5(Число)][-4(Число)]
Далее добавляем поле Число (назовем его - Целое) в нем в поле "Копия из" вписываем следующие - [Составное], далее добавим еще одно Составное поле и в нем вписываем следующую формулу:

Код: Выделить всё

[Целое] ([NumW(Целое)]) руб. [-2(Число)][-1(Число)] коп.
Сохраняем. Все готово :D

Аватара пользователя
vladimir.runa
Сообщения: 48
Зарегистрирован: 26 сен 2016, 18:32
Контактная информация:

Re: Преобразование числа

Сообщение vladimir.runa » 27 сен 2016, 14:41

Приношу свои извинения - насчёт пользовательской формулы с получением слов "рублей"/"копеек" ошибся.
В ближайшее время будет выложена версия Руны с функцией вывода этих слов с наклонением, в зависимости от параметра.

Nikxdrummer
Сообщения: 12
Зарегистрирован: 27 сен 2016, 09:56

Re: Преобразование числа

Сообщение Nikxdrummer » 28 сен 2016, 05:20

Ekaterina.mk-plus писал(а):
Nikxdrummer писал(а):
Nikxdrummer писал(а):
По поводу слова "копейки", слишком сложно, можно ли как то проще подсказать или более детально все шаги расписать?!)
Не получается поместить число в поле "число", вставляю в "Копия из" [Название составного поля] и в итоге получаю число 0, хотя в результате расчета составного поля число 8 получаем.
Вот пример: Создаем Объект назовем его например "Преобразование числа", далее добавляем поле Число (Имя поля оставляем Число), затем ставим значение знаков после запятой - 2, добавляем поле Составное (Имя поля также не меняем) вписываем следующую формулу:

Код: Выделить всё

[-10(Число)][-9(Число)][-8(Число)][-7(Число)][-6(Число)][-5(Число)][-4(Число)]
Далее добавляем поле Число (назовем его - Целое) в нем в поле "Копия из" вписываем следующие - [Составное], далее добавим еще одно Составное поле и в нем вписываем следующую формулу:

Код: Выделить всё

[Целое] ([NumW(Целое)]) руб. [-2(Число)][-1(Число)] коп.
Сохраняем. Все готово :D
C этим всем я разобрался, добился выделения целого и сотого числа, потом добился того чтобы в зависимости от последней цифры писалось слова рубли и копейки в нужно падеже с помощью такой простой формулы

Код: Выделить всё

[String(ПосЦифРуб=1?рубль:)][String(ПосЦифРуб=2?рубля:)][String(ПосЦифРуб=3?рубля:)][String(ПосЦифРуб=4?рубля:)][String(ПосЦифРуб=5?рублей:)][String(ПосЦифРуб=6?рублей:)][String(ПосЦифРуб=7?рублей:)][String(ПосЦифРуб=8?рублей:)][String(ПосЦифРуб=9?рублей:)][String(ПосЦифРуб=0?рублей:)]
Аналогично с копейками.
"добавляем поле Число (назовем его - Целое) в нем в поле "Копия из" вписываем следующие - [Составное]" Именно так я и делал, но в поле "Число" результат всегда равен 0, то есть он не копирует результат поля "Составное", не могу понять почему.

Nikxdrummer
Сообщения: 12
Зарегистрирован: 27 сен 2016, 09:56

Re: Преобразование числа

Сообщение Nikxdrummer » 28 сен 2016, 05:22

vladimir.runa писал(а):Приношу свои извинения - насчёт пользовательской формулы с получением слов "рублей"/"копеек" ошибся.
В ближайшее время будет выложена версия Руны с функцией вывода этих слов с наклонением, в зависимости от параметра.
Вы не ошиблись, правильно направили!

Ответить