Получить последнюю цифру числа 1с
в то время как это делает работу, кажется, что, вероятно, есть хорошее, простое, математическое решение такой проблемы. Манипуляция струнами кажется неуклюжей.
Edit: независимо от различий в скорости, mystring[0] вместо Substring () по-прежнему является просто строкой манипуляция
и i будет содержать то, что вам нужно
во-первых, вы должны решить, что вы подразумеваете под "лучшим" решением, конечно, с учетом эффективности алгоритма, его читаемости/ремонтопригодности и вероятности появления ошибок в будущем. Однако тщательные модульные тесты обычно позволяют избежать этих проблем.
я запускал каждый из этих примеров 10 миллионов раз, и значение результатов-это число ElapsedTicks что прошли.
без лишних слов, от самого медленного до самого быстрого алгоритмы:
преобразование в строку, берем первый символ
использование логарифма
циклы
условия
раскатали и оптимизирован петля
Примечание:
каждый тест называет Random.Next() чтобы получить следующий int
редактировать
несколько человек запросили версию цикла
лучшее, что я могу придумать-это:
Не очень красиво :)
[отредактировано: первый ответ был очень плохой :) ]
[Edit 2: я бы, вероятно, посоветовал строку, манипулирующую решениями, хотя]
[Edit 3: форматирование кода и nice :) ]
вариация на ответ Антона:
имел ту же идею, что и Леннарт
Это также работает с отрицательными числами.
Если вы думаете, что ответ Keltex-это некрасиво, попробуйте это, это действительно некрасиво, и даже быстрее. Он выполняет развернутый двоичный поиск для определения длины.
П. С. MartinStettner была такая же идея.
очевидный, но медленный математический подход:
в результате temp
редактировать: нет, я ошибся, я забыл снова построить int, извините. Развернутая версия-самая быстрая.
это работает для всех целочисленных значений со знаком включительно -2147483648 , который является наименьшим целым числом со знаком и не имеет положительного аналога. Math.Abs( -2147483648 ) вызывает System.OverflowException и - -2147483648 вычисляет -2147483648 .
реализация может рассматриваться как сочетание преимуществ двух быстрых реализаций до сих пор. Он использует двоичный поиск и избегает лишних делений. Быстрый бенчмарк с индексом цикла со 100,000,000 итерациями показывает, что он в два раза быстрее, чем самая быстрая реализация.
завершается после 2,829,581 клещи.
для сравнения я также измерил исправленный вариант текущего самая быстрая реализация, которая заняла 5,664,627 клещи.
принятый ответ с той же коррекцией требуется 16,561,929 тики для этого теста на моем компьютере.
Дано трехзначное целое число, найти первую и последнюю цифру.
Помогите решить. Дано трехзначное целое число, найти первую и последнюю цифру.
Переставьте первую и последнюю цифры числа
Пусть дано натуральное n. Переставьте первую и последнюю цифры числа n. Строки не использовать!
Дано число n. Обрезать первую и последнюю цифры
Дано число n. Обрезать первую и последнюю цифры.
Дано трицифровое число.Определить имеет ли число одинаковые первую и последнюю цифры
Дано трицифровое число. Определить что число имеет одинаковые первую и последнюю цифры (131, 272 и.
какая циферка в середине не важно
играемся с двумя по краям
а вообще прикольная как-то задачка на время была нужно была за 10 мин написать
получить последний день каждого года от сегодняшнего на протяжении 10 лет
Добавлено через 1 минуту
день недели именно
если уж универсально.
А конфликта нет.В задании написано, что трёхзначное число дано. т.е. оно на входе.
о значности числа на выходе (получено) ничего не сказано. к=980;
д=СтрДлина(Формат(к,"ЧГ="));
ч=Pow(10,д-1);
х = к%10*ч+цел((к%ч)/10)*10+цел(к/ч);
Сообщить(Формат(к,"ЧЦ="+д+"; ЧВН=; ЧГ=")+"-->"+Формат(х,"ЧЦ="+д+"; ЧВН=; ЧГ="));
для любых чисел любой длины
Добавлено через 1 минуту
Мне кажется проще посчитать степень в цикле не перебирая весь ряд, если не нравиться это))
Думаешь так выгодней?
Мне кажется проще посчитать степень в цикле не перебирая весь ряд, если не нравиться это))
Дано число n, переставить первую и последнюю цифры местами!
Помогите плс !Дано число n, переставить первую и последнюю цифры местами!(Без использования массива)
Дано число n, переставить первую и последнюю цифры местами
Помогите плс !Дано число n, переставить первую и последнюю цифры местами!С++
Дано натуральное число: - найти первую и последнюю цифры числа
доброго времени суток не могли бы помочь с такой задачкой Дано натуральное число - найти сумму.
Дано натуральное число n. Переставить первую и последнюю цифры числа
Дано натуральное число x. Переставить первую и последнюю цифры числа. У меня есть похожая задача.
Дано натуральное число. Переставить первую и последнюю цифры числа n
Дано натуральное число n. Переставить первую и последнюю цифры числа n.
Дано натуральное число. Найти первую и последнюю цифры числа
Помоги пожалуйста решить задачки. Не фига вспомнить не могу. Завтра сдать надо, а то к зачету не.
Числовым у нас может быть реквизит объекта конфигурации или переменные в модулях.
Максимально допустимая разрядность числа составляет 38 знаков, длина целой части не может превышать 32 символа, точность — 10 символов. Хотя в переменных можно оперировать числами превышающих разрядность в 38 символов, но в ИБ (информационную базу) можем записывать значения с длинной целой части не больше 32‑х знаков.
Над данными числового типа применимы операции: +, -, *, /, ( ), %(остаток от деления нацело 10%3=1).
Математические функции для чисел можно посмотреть в синтакс помощнике
Общее описание встроенного языка-> Встроенные функции-> Функции по работе с типом Число
Из всех функции, которые там приведены лично мне пока пришлось работать только с двумя:
Окр(<Число>, <Разрядность>, <РежимОкругления>) Функция округляет исходное число до нужной разрядности в соответствии с заданным режимом округления.
Параметры: <Число> (обязательный), Исходное число. Остальные параметры не обязательны.
Цел(<Число>) — Функция вычисляет целую часть переданного числа, полностью отсекая дробную часть.
Пример: МожноКупить = Цел ( Наличность / Цена );
Если вы сталкивались в задачах с другими функциями, напишите примеры в комментариях.
Часто на практике встречается преобразование типов данных из строки в число, для этих целей есть функция Число().
Функция Число() — Преобразует полученный параметр (параметр обычно строкового типа) в значение типа Число.
Пример: КонтрольноеЧисло = Число ( Прав ( СтраховойНомер , 2 ));
Типа Булево преобразуется в число:
• Ложь преобразуется в 0;
• Истина преобразуется в 1.
Приоритет арифметических операций:
1) ( )
2) Унарные арифметические операции (+, -)
3) *, /, %
4) Бинарные арифметические операции (+, -)
5) Операции сравнения (>,>=,
6) НЕ
7) И
8) ИЛИ
Приведу еще пару функций которые полезны при работе с Числом
Формат(<Значение>, <ФорматнаяСтрока>) Функция формирует удобное для чтения представление значений.
Параметры: <Значение> (обязательный) Тип параметра: Число; Дата; Булево.
Форматную строку удобно задавать, вызвав: Конструктор форматной строки
Макс(<Значение1>,…,<ЗначениеN>) Функция определяет максимальное значение из полученных параметров.
Параметры: <Значение1>,…,<ЗначениеN> (обязательный) и могут иметь один Тип: Число; Строка; Дата; Булево.
Пример:
// Пример для чисел
Мин(<Значение1>,…,<ЗначениеN>) Из полученных параметров функция определяет минимальное значение.
Пример:
// Пример для чисел
Часто встречаются задачи, когда число надо представить прописью, для этих целей есть функиця:
ЧислоПрописью(<Число>, <ФорматнаяСтрока>, <ПараметрыПредметаИсчисления>) Функция формирует представление числа прописью.
Я не старался переписать справку, хотя скорей всего так и получилось.
Чаще заглядывайте в синтакс-помощник.
В данных статьях я описывал примитивные типы данных: Работа со строками 1С и NULL 1C.
Рассмотрим один из примитивных типов, с которым приходится сталкиваться разработчикам на платформе 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
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Читайте также: