Текущее время: Пт, мар 29 2024, 07:39

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Как обрезать (не округлить!) число с плавающей точкой
СообщениеДобавлено: Чт, дек 02 2021, 13:40 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 08:40
Сообщения: 226
Добрый день!

Подскажите, как решить такую задачу: имеется число с тремя знаками после запятой. Необходимо обрезать последний знак после запятой (не округлять, а обрезать) и записать в число с двумя знаками после запятой.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обрезать число с плавающей точкой.
СообщениеДобавлено: Чт, дек 02 2021, 14:23 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1570
Откуда: Пермь
Пол: Мужской
Записать в char, вычислить длину, уменьшить на 1, взять от этого чара +0(N), где N - уменьшенное на единицу значение.
Если после этого надо вернуть в число, то возвращаете в заранее определенную переменную с двумя знаками после запятой.
Если надо оставить в чаре, то оставляете.

_________________
Алё, это Пакистан? Нам нужен один килограмм


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обрезать число с плавающей точкой.
СообщениеДобавлено: Чт, дек 02 2021, 15:51 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Yozhhhhh написал:
Записать в char, вычислить длину, уменьшить на 1, взять от этого чара +0(N), где N - уменьшенное на единицу значение.
Если после этого надо вернуть в число, то возвращаете в заранее определенную переменную с двумя знаками после запятой.
Если надо оставить в чаре, то оставляете.

Может не извращаться и использовать оператор round со значением mode = ROUND_DOWN?

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обрезать (не округлить!) число с плавающей точкой
СообщениеДобавлено: Чт, дек 02 2021, 17:39 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
Или trunc https://help.sap.com/saphelp_maxdb77/helpdata/en/44/d9019d62684426e10000000a155369/content.htm?no_cache=true


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обрезать число с плавающей точкой.
СообщениеДобавлено: Пт, дек 03 2021, 00:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Yozhhhhh написал:
Записать в char, вычислить длину, уменьшить на 1, взять от этого чара +0(N), где N - уменьшенное на единицу значение.
Если после этого надо вернуть в число, то возвращаете в заранее определенную переменную с двумя знаками после запятой.
Если надо оставить в чаре, то оставляете.

Отсыпь травы :mrgreen:

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обрезать число с плавающей точкой.
СообщениеДобавлено: Пт, дек 03 2021, 09:33 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1570
Откуда: Пермь
Пол: Мужской
Kengur написал(а):
Отсыпь травы

Зато мое решение самое элегантное и вдобавок развивает мелкую моторику пальцев.
А если серьезно, то это записывается в то же число строк, что и "по-модному".
Разумеется, лучше делать теми операторами, которые для этого предназначены.
Но, к примеру, в ситуации, когда надо сделать прямо сейчас и чтобы это работало (и когда не до красоты), а решения нет, то я сделаю так и не обломаюсь.
А по поводу того, насколько это "неконцептуально", ты можешь написать хоть целую книгу, меня это не задевает)

_________________
Алё, это Пакистан? Нам нужен один килограмм


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обрезать число с плавающей точкой.
СообщениеДобавлено: Пт, дек 03 2021, 10:02 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 08:40
Сообщения: 226
LKU написал:
Yozhhhhh написал:
Записать в char, вычислить длину, уменьшить на 1, взять от этого чара +0(N), где N - уменьшенное на единицу значение.
Если после этого надо вернуть в число, то возвращаете в заранее определенную переменную с двумя знаками после запятой.
Если надо оставить в чаре, то оставляете.

Может не извращаться и использовать оператор round со значением mode = ROUND_DOWN?

Придётся извращаться, для EHP6 нет таких новых функций. А ф-я trunc не имеет такой расширенной функциональности в старых системах, а возвращает только целую часть числа.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как обрезать (не округлить!) число с плавающей точкой
СообщениеДобавлено: Пт, дек 03 2021, 11:12 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1392
умножить на 100, trunc, затем /100.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как обрезать (не округлить!) число с плавающей точкой
СообщениеДобавлено: Пн, дек 06 2021, 08:49 
Специалист
Специалист

Зарегистрирован:
Вт, дек 30 2008, 18:10
Сообщения: 171
Пол: Мужской
Code:
data d_num3 type p decimals 3.
data d_num2 type p decimals 2.
d_num3 = '10.059'.
d_num2 = shift_right( val = |{ d_num3 }| places = 1 ).
write:/ d_num2.
d_num2 = round( val = d_num3 dec = 2 mode =  CL_ABAP_MATH=>ROUND_DOWN ).
write:/ d_num2.


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

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


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

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot]


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

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