Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 28 мар 2024 14:25

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Преобразование
СообщениеДобавлено: 13 окт 2011 14:30 
Участник
Участник

Зарегистрирован:
26 мар 2011 12:53
Сообщения: 9
Можно ли в генераторе отчета преобразовать из цыфрового выражения числа в текстовое (пример - 23 = двадцать три)


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Преобразование
СообщениеДобавлено: 13 окт 2011 17:22 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
chigirin-geo писал(а):
Можно ли в генераторе отчета преобразовать из цыфрового выражения числа в текстовое (пример - 23 = двадцать три)

NumToStr(23) = двадцять три
NumToStr(23,'Russian') = двадцать три

P.S. Если Вам такая функция нужна для отображения денег, то может пригодиться еще и функция Money
Пример:
Money(X,'рубль;рубля;рублей')
X Результат
1 рубль
3 рубля
40 рублей

Money(X,'гривня;гривні;гривень')
X Результат
1 гривня
3 гривні
40 гривень

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Преобразование
СообщениеДобавлено: 28 окт 2011 11:05 
Участник
Участник

Зарегистрирован:
26 мар 2011 12:53
Сообщения: 9
NumToStr(23) = двадцять три

А если нужно сумма с десятыми пример 23,92 пропись десятых отбрасует

P.S. У меня получалось так [Get(3,[P20110])] грн. ([NumToStr([Get(3,[P20110])])]) грн. но проблема возникла с десятыми (копейками)


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Преобразование
СообщениеДобавлено: 29 окт 2011 14:42 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
chigirin-geo писал(а):
NumToStr(23) = двадцять три

А если нужно сумма с десятыми пример 23,92 пропись десятых отбрасует

P.S. У меня получалось так [Get(3,[P20110])] грн. ([NumToStr([Get(3,[P20110])])]) грн. но проблема возникла с десятыми (копейками)

Посмотрите пример

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Преобразование
СообщениеДобавлено: 31 окт 2011 09:06 
Участник
Участник

Зарегистрирован:
26 мар 2011 12:53
Сообщения: 9
Как сделать чтобы округление было к целым, тоисть копейки округлялись в большую или меньшую сторону.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Преобразование
СообщениеДобавлено: 31 окт 2011 09:17 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
chigirin-geo писал(а):
Как сделать чтобы округление было к целым, тоисть копейки округлялись в большую или меньшую сторону.

Round(X) - округление
Trunc(X) - отбрасывание дробной части
Замечу также что Round(X)=Trunc(X+0.5)

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Преобразование
СообщениеДобавлено: 25 ноя 2017 13:10 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
Dmitry_Zolotar писал(а):
chigirin-geo писал(а):
Как сделать чтобы округление было к целым, тоисть копейки округлялись в большую или меньшую сторону.

Round(X) - округление
Trunc(X) - отбрасывание дробной части
Замечу также что Round(X)=Trunc(X+0.5)


Виявляється, що Round(X) не завжди дорівнює Trunc(X+0.5)

На скільки я зрозумів, функцію Trunc не можна застосовувати для цифр, більших за 5000000. Але чому так?
Наприклад, скрипт:
$X=5406651.1612
$X=@Calc trunc(1000*$X+0.5)/1000
@Dialog.Message $X

видає результатом 1111683.866
Звідки береться таке значення?
В той же час функція Round дасть 5406651.161:
$X=5406651.1612
$X=@RoundTo $X 3
@Dialog.Message $X

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование
СообщениеДобавлено: 26 ноя 2017 01:49 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
fendak писал(а):
Виявляється, що Round(X) не завжди дорівнює Trunc(X+0.5)

На скільки я зрозумів, функцію Trunc не можна застосовувати для цифр, більших за 5000000. Але чому так?
Наприклад, скрипт:
$X=5406651.1612
$X=@Calc trunc(1000*$X+0.5)/1000
@Dialog.Message $X

видає результатом 1111683.866
Звідки береться таке значення?

Функція Trunc повертає цілочисленну частину числа з плаваючою комою (float). А даний тип пiдтримує дiапазон чисел вiд -2 147 483 648.0 до 2 147 483 647.0.
Ваше число 1000*$X=5 406 651 000.0 випадає з даного дiапазону, тому i результат такий.

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 118


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB