Текущее время: Пт, янв 28 2022, 02:26

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


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


ВНИМАНИЕ!

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



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

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

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


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

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

_________________
Bück Dich


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

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

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

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


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

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 139
Или 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
Сообщения: 1549
Yozhhhhh написал:
Записать в char, вычислить длину, уменьшить на 1, взять от этого чара +0(N), где N - уменьшенное на единицу значение.
Если после этого надо вернуть в число, то возвращаете в заранее определенную переменную с двумя знаками после запятой.
Если надо оставить в чаре, то оставляете.

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

_________________
я твой сап эфай внедрял
BAdI-позитив


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

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

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

_________________
Bück Dich


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

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

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

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


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

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


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

Зарегистрирован:
Вт, дек 30 2008, 18:10
Сообщения: 149
Пол: Мужской
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 часа


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

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


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

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