Аналитика
http://www.geosystema.net/forum/

Преобразование
http://www.geosystema.net/forum/viewtopic.php?f=1&t=2214
Страница 1 из 1

Автор:  chigirin-geo [ 13 окт 2011 14:30 ]
Заголовок сообщения:  Преобразование

Можно ли в генераторе отчета преобразовать из цыфрового выражения числа в текстовое (пример - 23 = двадцать три)

Автор:  Dmitry_Zolotar [ 13 окт 2011 17:22 ]
Заголовок сообщения:  Re: Преобразование

chigirin-geo писал(а):
Можно ли в генераторе отчета преобразовать из цыфрового выражения числа в текстовое (пример - 23 = двадцать три)

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

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

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

Автор:  chigirin-geo [ 28 окт 2011 11:05 ]
Заголовок сообщения:  Re: Преобразование

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

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

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

Автор:  Dmitry_Zolotar [ 29 окт 2011 14:42 ]
Заголовок сообщения:  Re: Преобразование

chigirin-geo писал(а):
NumToStr(23) = двадцять три

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

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

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

Автор:  chigirin-geo [ 31 окт 2011 09:06 ]
Заголовок сообщения:  Re: Преобразование

Как сделать чтобы округление было к целым, тоисть копейки округлялись в большую или меньшую сторону.

Автор:  Dmitry_Zolotar [ 31 окт 2011 09:17 ]
Заголовок сообщения:  Re: Преобразование

chigirin-geo писал(а):
Как сделать чтобы округление было к целым, тоисть копейки округлялись в большую или меньшую сторону.

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

Автор:  fendak [ 25 ноя 2017 13:10 ]
Заголовок сообщения:  Re: Преобразование

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

Автор:  Руслан Пархуць [ 26 ноя 2017 01:49 ]
Заголовок сообщения:  Re: Преобразование

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 результат такий.

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/