Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
24 Сен 2018, 05:27
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Работа с числами  (Прочитано 419 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Кот_Леопольд

  • *
  • Сообщений: 31
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-20
  • Сайт: 
  • Профессия: Ученик 1С
И снова здравствуйте. Помогите с написанием кода. Нужно число округлять до 5/10, примерно условие думаю должно быть таким:
Если десятичная часть числа от 0,1 до 0,5 То целая часть числа + 0,5  Иначе
Если десятичная часть числа от 0,6 до 0,9 То целая часть числа + 1
Можно ли от числа отделять десятичные части?
Можно в свойствах реквизита указать что число нужно округлять до 0,5?

Последний раз редактировалось: Кот_Леопольд; 12 Сен 2018, 08:20


Оффлайн alexandr_ll

  • *****
  • Сообщений: 678
  • РЕПУТАЦИЯ: 117
  • КПД: 17%
  • Регистрация: 2016-08-23
  • Сайт: 
  • Профессия: Программист 1С
Re: Работа с числами
« Ответ #1: 12 Сен 2018, 09:22 »
И снова здравствуйте. Помогите с написанием кода. Нужно число округлять до 5/10, примерно условие думаю должно быть таким:
Если десятичная часть числа от 0,1 до 0,5 То целая часть числа + 0,5  Иначе
Если десятичная часть числа от 0,6 до 0,9 То целая часть числа + 1
Можно ли от числа отделять десятичные части?
Можно в свойствах реквизита указать что число нужно округлять до 0,5?

Вот, например как сделано В Торговле и склад 7.7
// глОкруглить(Числ, ПорядокОкругления)
//
// Параметры:
//  Числ              - исходное число
//  ПорядокОкругления - элемент перечисления Порядки окгугления:
//  "шаг" округления (0.01 (арифметическое), 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100)
//
// Возвращаемое значение:
//  Округленное по заданному порядку значение
//
// Описание:
//  Округляет число вверх по заданному порядку. Т.е число 123.37 при порядке
//  округление 0.5 превратиться в 123.50, а число 0.1 при порядке округления
//  5 станет равным 5.
//  Если значение перечисления ОкрТочно, то округляет арифметически до 0.01
//
Функция глОкруглить(Числ, ПорядокОкругления) Экспорт
Перем Рез;

Если ПорядокОкругления = Перечисление.ПорядкиОкругления.ОкрТочно Тогда

// арифметическое округление до 2-х знаков после запятой
Рез = Окр(Числ, 2);
Иначе
// округление к верхней границе по заданному порядку

// преобразуем порядок округления число
Порядок = Число(Строка(ПорядокОкругления));

// вычислим количество интервалов, входящих в число
КолвоИнтервал = Числ / Порядок;

// вычислим целое количество интервалов.
КолвоИнтервалЦел= Цел(КолвоИнтервал);

Если КолвоИнтервал = КолвоИнтервалЦел Тогда
// Числа поделились нацело. Округлять не нужно.
Рез = Числ;
Иначе
Рез = Порядок * (КолвоИнтервалЦел + 1);
КонецЕсли;

КонецЕсли;

Возврат Рез;
КонецФункции // глОкруглить()

Оффлайн Кот_Леопольд

  • *
  • Сообщений: 31
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-20
  • Сайт: 
  • Профессия: Ученик 1С
Re: Работа с числами
« Ответ #2: 12 Сен 2018, 09:55 »
Вроде разобрался. Вот что получилось:
Число = Х;
Если  Окр(Х,0,0) >= Окр(Х,1,0)  Тогда
      Число = Окр(Х,0,0);
Иначе
     Если Окр(Х,0,0) < Окр(Х,1,0) Тогда
          Число = Окр(Х,0,0)+ 0.5;
КонецЕсли;
    КонецЕсли;
Проверил работает

Оффлайн depb

  • **
  • Сообщений: 75
  • РЕПУТАЦИЯ: 15
  • КПД: 20%
  • Регистрация: 2017-01-18
  • Сайт: 
  • Профессия: Программист 1С
Re: Работа с числами
« Ответ #3: 13 Сен 2018, 12:15 »
Вот же любители изобретать велосипед. В 1с уже все есть. В тексте модуля правой кнопкой мыши - конструктор форматной строки, а там выбираешь, какой формат тебе нужен - с точкой, без, количество знаков после запятой и т.д. Тоже самое с датой.

Оффлайн Sy4a

  • **
  • Сообщений: 90
  • РЕПУТАЦИЯ: 17
  • КПД: 19%
  • Регистрация: 2015-07-16
  • Сайт: 
  • Профессия: Программист 1С
Re: Работа с числами
« Ответ #4: 13 Сен 2018, 16:24 »
Вот же любители изобретать велосипед. В 1с уже все есть. В тексте модуля правой кнопкой мыши - конструктор форматной строки, а там выбираешь, какой формат тебе нужен - с точкой, без, количество знаков после запятой и т.д. Тоже самое с датой.
Задача была округлять десятичный остаток числа в большую сторону чтоб был кратным 5, а ты тут нам про формат какойто говоришь в котором нет настроек округления кратному 5 и нет функции стандартной для такого округления.
Вроде разобрался. Вот что получилось:Число = Х;Если  Окр(Х,0,0) >= Окр(Х,1,0)  Тогда       Число = Окр(Х,0,0);Иначе      Если Окр(Х,0,0) < Окр(Х,1,0) Тогда           Число = Окр(Х,0,0)+ 0.5;КонецЕсли;    КонецЕсли;Проверил работает
В одну строчку решается как то так:
Если Цел(Х)-окр(Х,0,0)= 0 и Цел(Х)<>Х тогда Число =Цел(Х)+0.5 иначе Число =окр(Х,0,0) конецЕсли
Впринципе тоже самое что и у вас только без двойного если и выглядит как по мне по красивее и нагляднее чтоли:).
Что у вас что и у меня если число будет например 1.51 то оно округлится до 2 а не до 1.5, это для вас правильно или нет? Если нет то сначала надо до десятых число округлить а уж потом делать кратным 5 и вот тут уже поможет формат:
Число=Формат(Х,"ЧДЦ=1");
Которое округлит по правилу 1.55=1.6


Оффлайн Кот_Леопольд

  • *
  • Сообщений: 31
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-20
  • Сайт: 
  • Профессия: Ученик 1С
Re: Работа с числами
« Ответ #5: 14 Сен 2018, 07:57 »
Цитировать
Что у вас что и у меня если число будет например 1.51 то оно округлится до 2 а не до 1.5, это для вас правильно или нет?
Да, для меня как раз такое решение самое что ни на есть верное. Спасибо большое, ваш вариант действительно по симпатичней будет.
 


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

alexandr_ll
59 Сообщений
alex0402
49 Сообщений
AIFrame AIFrame
42 Сообщений
MuI_I_Ika MuI_I_Ika
30 Сообщений
LexaK
29 Сообщений
wise wise
29 Сообщений
Каримдат Каримдат
25 Сообщений
Sy4a
19 Сообщений
Golickoff Golickoff
18 Сообщений
BuhRust
18 Сообщений

* Кто онлайн

  • Точка Гостей: 171
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal