Математические функции в QLua(Lua)

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 4, среднее: 5,00 из 5)
Загрузка...

Qlua-основы
Стандартные арифметические операции:
"+" - сложение,
"-" - вычитание,
"/" - деление,
"*" - умножение,
"%" - остаток от деления (5%2 == 1).

   math.abs (x) -- Модуль x.

   math.acos(x) -- Возвращает арккосинус x

   math.asin(x) -- Возвращает арксинус x (в радианах).

   math.atan(x) -- Возвращает арктангенс x (в радианах).

   math.atan2(x, y) -- Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. (Также корректно обрабатывает случай когда y равен нулю.)

   math.ceil(x) -- Возвращает наименьшее целое число, большее или равное x. (Округление «вверх»).

   math.cos(x) -- Возвращает косинус x (Угол – в радианах).

   math.cosh(x) -- Возвращает гиперболический косинус x.

   math.deg(x) -- Переводит угол, заданный в радианах (x) в градусы.

   math.exp(x) -- Возвращает e^x.

   math.floor(x) -- Возвращает наибольшее целое число, меньшее или равное x. (Округление «вниз»)

   math.fmod(x, y) -- Возвращает остаток от деления x на y.

   math.frexp(x) -- Возвращает m и e такие, что x = m*2^e, e – целое, а модуль m находится в интервале [0.5, 1], либо ноль, если x равен нулю (разложение числа с фиксированной запятой).

   math.huge -- Значение HUGE_VAL, значение большее, либо равное любому числовому значению.

   math.ldexp(m, e) -- Возвращает m^2e (e должно быть целым). (Восстановление значения по мантиссе и показателю).

   math.log(x) -- Возвращает натуральный логарифм x.

   math.log10(x) -- Возвращает логарифм x по основанию 10.

   math.max(x,...) -- Возвращает максимальный из аргументов.

   math.min(x,...) -- Возвращает минимальный из аргументов.

   math.modf(x) -- Возвращает два числа: целую часть x и дробную часть x.

   math.pi -- Значение pi.

   math.pow(x, y) -- Возвращает x^y

   math.rad(x) -- Конвертирует угол x, заданный в градусах, в радианы.

   math.random() -- Возвращает псевдослучайное число, из генератора

Примеры:

math.random(); -- Вернет случайное число от 0 до 1 с точностью до 16 знаков после запятой
math.random(10); -- Вернет случайное целое число от 1(включительно) до 10(включительно)
math.random(3,5); -- Вернет случайное целое число от 3(включительно) до 5(включительно)

   math.randomseed(x) -- Инициализирует генератор псевдослучайных чисел параметром, каждый параметр порождает соответствующую (но одну и ту же) последовательность псевдослучайных чисел.

   math.sin(x) -- Возвращает синус x (аргумент – в радианах).

   math.sinh(x) -- Возвращает гиперболический синус x.

   math.sqrt(x) -- Возвращает квадратный корень x

   math.tan(x) -- Возвращает тангенс угла x (аргумент – в радианах)

   math.tanh(x) -- Возвращает гиперболический тангенс x

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

Математические функции в QLua(Lua): 15 комментариев

  1. Дмитрий добрый день!

    помогите пожалуйста решить маленькую проблему. У меня скрипт который выводит данные в таблицу. Я бы хотел просуммировать последние 10 значений в определенном столбце этой таблицы, и вывести эту сумму в новую ячейку, не могу грамотно написать цикл.

    у меня есть такой вариант: ( здесь, L - номер последней строки, этот скрипт считает сумму нарастающим итогом по всем
    ячейкам столбца начиная с 10 строки до последней, но мне нужно считать последние 10 строк, допустим в VBA там есть функция суммы которая все решает, в LUA не могу сообразить как это сделать)

    V = 0
    for i=9, rows  do
       for j = 10, L do
          V = tonumber(GetCell(TABLE_ID, j-1, 7).image) + tonumber(GetCell(TABLE_ID, j, 6).image)
       end
       SetCell(TABLE_ID, num, 7, tostring(V));
    end
    1. Здравствуйте! Не совсем понял какие колонки Вы считаете и в какие ячейки записываете, но вот пример того, как посчитать сумму последних 10-ти значений в колонке с индексом 7 и потом вывести значение в той же колонке в строку под номером num:

      1
      2
      3
      4
      5
      6
      7
      
      local Sum = 0
      local ColNum = 7 -- индекс колонки (начинаются с 0)
      for j = L-9, L do
         -- Считает сумму
         Sum  = Sum + tonumber(GetCell(TABLE_ID, j, ColNum).image) 
      end
      SetCell(TABLE_ID, num, ColNum, tostring(Sum))

      Это то, что Вам нужно?

  2. Дмитрий, добрый день, подскажите, как округлить дробную часть? Например: 3.27893 -> 3.28
    Либо просто обрезать дробную часть до 2-х цифр.
    Заранее благодарю.

    1. Выбирайте на вкус:
      math.ceil(x) -- Возвращает наименьшее целое число, большее или равное x. (Округление «вверх»).
      math.floor(x) -- Возвращает наибольшее целое число, меньшее или равное x. (Округление «вниз»)

      Соответственно если хотите до 2 знаков, тогда например: math.floor(x*100)/100

    2. Добрый день!
      Можно так:

      1
      2
      3
      4
      5
      6
      7
      
      -- (дополняет библиотеку math) ОКРУГЛЯЕТ ЧИСЛО ДО УКАЗАННОЙ ТОЧНОСТИ
      math.round = function(num, idp)
        local mult = 10^(idp or 0)
        return math.floor(num * mult + 0.5) / mult
      end
       
      math.round(3.27893, 2) -- должно вернуть 3.28
  3. Я не вижу здесь стандартных арифметических операций, которые ищу, а именно +, -, * и /. Пожалуйста, ответьте или ссылкой на эти операции, или, если статья будет ими дополнена, можете не отвечать.