Как сделать положительное число отрицательным 1с
Пример 1. Создадим числовую переменную
Преобразование значений другого типа в число
Преобразовать в число можно значения строкового типа, либо логического типа (Булево). Значение типа Булево преобразуется в число по следующим правилам:
- Ложь преобразуется в 0;
- Истина преобразуется в 1.
Значение типа Строка преобразуется в число в том случае, если оно является строковым представлением литерала численного типа.
После выполнения данного кода в переменной ПолученноеЧисло будет содержаться числовое значение 1.25
Функции работы со значениями типа Число в 1с 8.3
В данном разделе будут рассмотрены основные функции работы с числами в 1с 8 и приведены примеры их использования.
Цел(<Число>). Возвращает целую часть числа переданного в параметре.
Пример 4. Определить делится ли число 121 на 11.
Окр(<Число>, <Разрядность>, <РежимОкругления>). Функция округляет число, переданное в первом параметре, до знака после запятой переданного во втором параметре. Значение разрядности может быть и нулевым (округление до целого) и отрицательным (округление до соответствующего разряда целой части). Параметр РежимОкругления может принимать значения:
- 0 (или РежимОкругления.Окр15как10). Округляет в меньшую сторону, то есть при округлении 1.5 будет возвращено 1;
- 1 (или РежимОкругления.Окр15как20). Округляет в большую сторону, то есть при округлении 1.5 будет возвращено 2;
Пример 5. Для того чтобы лучше разобраться с принципами округления рассмотрим округление до целого в меньшую и большую стороны, на ряде чисел от 1.1 до 1.9
Pow(<Основание>, <Показатель>). Возводит число переданное в первом параметре в степень переданную во втором параметре.
Пример 6. Извлечь квадратный корень из числа 144, а затем возвести его в квадрат, в итоге снова должно получится число 144.
У меня есть метод Java, в котором я суммирую набор чисел. Однако я хочу, чтобы любые отрицательные числа рассматривались как положительные. Так что . (1)+(2)+(1)+(-1) должно равняться 5.
Я уверен, что есть очень простой способ сделать это - я просто не знаю как.
просто позвони математика.abs. Например:
где будет установлен x to 5 .
концепция, которую вы описываете, называется "абсолютное значение", а Java имеет функцию математика.abs чтобы сделать это за вас. Или вы можете избежать вызова функции и сделать это самостоятельно:
ты ищешь абсолютное значение, приятель. Math.abs(-5) возвращает 5.
использовать abs функция:
этот код можно безопасно вызывать и на положительных числах.
вы спрашиваете об абсолютных значениях?
математика.пресс.(..) это функция, которую вы, вероятно, хотите.
вы хотите обернуть каждое число в Math.abs() . например,
если вы хотите избежать написания Math. -часть, вы можете включить математику util статически. Просто напишите
вместе с вашим импортом, и вы можете сослаться на abs() -функция, просто писать
самый простой, если подробный способ сделать это-обернуть каждое число в математику.abs () позвоните, чтобы вы добавили:
с логическими изменениями, чтобы отразить, как структурирован ваш код. Многословно, возможно, но это делает то, что вы хотите.
когда вам нужно представить значение Без понятия потери или отсутствия (отрицательное значение), которое называется "абсолютным значением".
логика получения абсолютного значения очень проста: "If it's positive, maintain it. If it's negative, negate it" .
это означает, что ваша логика и код должен работать следующим образом:
есть 2 способа отрицания значения:
- , ну, отрицая это значение: value = (-value);
- умножая его на "100% отрицательный", или "-1": value = value * (-1);
Обе-две стороны одной медали. Просто обычно ты этого не помнишь.--4--> на самом деле value = 1 * (-value); .
Рассмотрим один из примитивных типов, с которым приходится сталкиваться разработчикам на платформе 1С 8.3, – Число. В этой статье мы научимся задавать числа в коде, создавать реквизиты с типом число , получать случайное число, округлять числа и получать из числа с дробью целое число.
Тип число в 1С
Задать число в коде просто: нужно какой-то переменной просто присвоить определенное число.
Так задаётся целое число:
А так задаются дробные числа:
Над числами в коде можно выполнять простые арифметические операции: сложение, вычитание, умножение и деление.
Причем, как непосредственно над числами:
Так и над переменными с типом число:
Если нужно инвертировать число, т.е. поставить какому-то уже заданному числу обратный знак (например, было 5, стало -5), то его нужно умножить на -1.
Сделать это можно несколькими способами:
Если нам нужно создать реквизит какого-то объекта, с типом число, то в свойстве Тип реквизита нужно выбрать тип Число. На картинке ниже у справочника создан реквизит с типом Число.
А также задать его точность и длину.
Остановимся на точности и длине подробнее.
Точность – это максимальное количество знаков после запятой.
Длина – это максимальное количество разрядов в числе (включая знаки после запятой).
Например, если длина 5, а точность 3, то максимальное число будет 99,999.
Если длина 5, а точность 0, то – 99999.
А если длинна 3, а точность 3, то – 0,999. Т.е когда длинна равна точности мы не сможем задать число равное 1.
Когда мы в коде задаем переменную с типом Число, то мы не ограничиваем эту переменную по длине и точности, в тоже время для реквизита объекта с типом Число нужно это делать заранее. При разработке вы должны заранее предусмотреть, какие у реквизита числового типа будет длинна и точность.
Точно также, реквизит с типом число нужной длинны и точности можно создать на управляемой форме.
Случайное число в 1С
В платформе 1С 8.3 имеется возможность сгенерировать случайное целое число при помощи генератора случайных чисел, который так и называется ГенераторСлучайныхЧисел. Для генерации случайного числа нужно воспользоваться методом этого объекта СлучайноеЧисло.
Рассмотрим, простой пример генерации случайного числа.
В этом случае Число1 будет сгенерировано от 0 до 4294967295 (2^32 -1).
В примере выше метод СлучайноеЧисло без параметров, но у этого метода есть два параметра:
Оба параметра являются необязательных и с их помощью можно задать верхнюю и нижнюю границу генерации случайных чисел. Причем параметр НижняяГраница не может быть меньше нуля, а параметр ВерхняяГраница не может быть больше 4294967295.
Например, в этом случае будет сгенерировано случайное число от 1 до 100.
Округлить число в 1С
В платформе 1С имеется возможность округления чисел по определенному правилу. Для этих целей существует метод Окр. Этот метод является функцией, которая принимает число, нужное для округления, и возвращает округленное число. Данный метод имеет следующий синтаксис:
Число – число, которое будет округляться;
Разрядность – до какого количества знаков после запятой нужно округлить число (если разрядность равна 0, то число будет округлено до целого числа).
РежимОкругления – системное перечисление, которое имеет два значения: РежимОкругления.Окр15как10 – в этом случае 1.5 округляется до 1, РежимОкругления.Окр15как20 – 1.5 округляется до 2. Если этот параметр не задан, то по умолчанию 1.5 округляется до 2
В этом случае будет следующий результат:
Целое число в 1С
Если предыдущий метод округляет число, то также имеется возможность получать целое число, т.е. просто отбросить дробную часть числа. Делает это метод Цел. Данный метод является функцией, принимающей единственный параметр – число, у которого нужно отбросить дробную часть, и возвращающей полученное целое число.
Рассмотрим работу этого метод в сравнении с методом округления числа.
Должен получиться следующий результат:
Из результата вы видите, что нельзя использовать метод Окр для получения целого числа, он именно округляет и не всегда может дать требуемый результат. Для получения целого числа используйте метод Цел.
Степень числа в 1С
В платформе 1С имеется возможность возвести нужное число в степень. Делается это при помощи метода Pow, который является функцией со следующим синтаксисом.
Рассмотрим ряд примеров:
Из примеров видно, что мы можем возводить в положительную и отрицательную степень, а также степень может быть дробной.
Функции чисел в 1С
В платформе 1С 8.3 имеется другие функции пот работе с числами , познакомится с ними можно в синтаксис-помощнике. В подразделе Функции работы со значениями типа Число.
Другие статьи о примитивных типах:
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
вы можете преобразовать отрицательное число в положительное, как это:
есть ли эквивалентный метод, чтобы сделать положительное число отрицательным?
точно так же, как вы делаете что-нибудь еще отрицательное: поместите отрицательный знак перед ним.
Примечание для всех, кто ответил с
или
или
как способ сохранить отрицательные числа отрицательными и превратить положительные отрицательные.
этот подход имеет один недостаток. Это не работает для всех чисел. Диапазон Int32 тип от "-2 31 " в "2 31 - 1.- Это значит, что есть еще одно "отрицательное" число. Следовательно, Math.Abs(int.MinValue) выдает OverflowException .
в правильный способ - использовать условные операторы:
этот подход работает для "всех" чисел.
или гарантированно будет отрицательным.
чтобы переключить знак целого числа, вы просто используете оператор знака:
чтобы сделать его отрицательным независимо от того, является ли исходное значение отрицательным или нет, вы сначала используете метод Abs:
EDIT: это неправильно для положительных входов. Я сделал ошибку, забыв, что остальные биты в-x (2S-Complement value) являются "противоположными" их значению в +x, а не одинаковыми. Поэтому простое изменение знакового бита не будет работать для положительных чисел.
Я оставлю это здесь Для в целях.
или хитрый способ ( я думаю ).
int y = x /
int.Максвеллову;
так
и поэтому любой int32 Or'ED с этим поставит 1 в знаковый бит (что делает его отрицательным) и оставит все остальные биты одинаковыми.
изменить: на самом деле, так как 1000 0000 0000 0000 0000 0000 0000 на самом деле является Minvalue, это также должно работать:
просто для удовольствия:
обновление: красота этого подхода заключается в том, что вы можете легко переделать его в генератор исключение:
несмотря на то, что я опаздываю на вечеринку здесь, я собираюсь перезвонить с некоторыми полезными трюками из моих аппаратных дней. Все они предполагают представление комплимента 2 для подписанных чисел.
никто не сказал, что это должен быть любой особенности отрицательное число.
Я использую myInt = -myInt;
Так Просто и легко
Если вы хотите иметь только положительные
более простой способ а = - а сделает одолжение
преобразование числа из положительного в отрицательное или из отрицательного в положительное:
просто то, что я хочу поделиться.
как уже упоминалось ранее, просто умножение на -1 не круто, как int.MinValue * -1 == int.MinValue
это действительно зависит от вашего приложения, но для моего (Инвертирование осей джойстика) я хочу убедиться, что все крайности по-прежнему доступны и поддерживают как можно большую точность.
С этой целью я сопоставляю Max Min и все между ними получает a * -1
Используя этот метод, -32767 недостижимо при инвертировании.private static int Invert(int value)
X=*-1 может работать не на всех компиляторах. поскольку он читает "умножить ""вычесть" 1 вместо отрицательного Чем лучше alt X=(0-X) , [ЧТО ОТЛИЧАЕТСЯ ОТ X-=X ]
используйте двоичный и удалить последний бит, который отвечает за отрицательный знак.
или использовать двоичный код или добавить знак к типу данных.
Это soln может показаться абсурдным и неполным, но я могу гарантировать, что это самый быстрый метод.
Если вы не экспериментируете с тем, что я опубликовал, этот пост может выглядеть дерьмово :D
например, для int:
Int-это 32-битный тип данных, поэтому последний бит (32-й) определяет знак.
и со значением который имеет 0 в 32 месте и остальные 1. Он будет преобразовывать отрицательные не положительные.
для прямо противоположного или со значением с 1 на 32-м месте и отдыха 0.
Читайте также: