Здравствуйте, гость ( Вход | Регистрация )

> Математические операции с плавающей точкой.
DarkMaster
сообщение 26.10.2015, 18:57
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Данный плагин позволяет производит математические операции с числами с плавающей точкой.
Плагин необходимо поместить в папку Plugins рядом с uopilot.exe. Для работы требуются установленные библиотеки c++:
http://www.microsoft.com/ru-ru/download/de...s.aspx?id=40784

Код
math.dbl (<var1> <sign> <var2>)
<var1> - первое число (может быть не целым).
<sign> - знак математической операции (+-/*).
<var2> - второе число (может быть не целым).
Корректной последовательностью чисел с плавающей точкой для считается последовательность, удовлетворяющая следующим условиям:
    Знак положительного или отрицательного числа (необязательно).
    Последовательность цифр, как вариант, может содержать десятичную точку или запятую.
    Дополнительная экспонентная часть, которая сама по себе состоит из символа 'e' или 'E',
        после которого следует дополнительный знак и последовательность цифр.
Диапазон значений:
    min:  2,2250738585072014 E – 308
    max: 1,7976931348623158 E + 308

Результат работы функции должен быть присвоен массиву. Возвращаемые значения:
%a [1] - результат математической операции. Если функция завершилась с ошибкой, вернет "0".
%a [2] - возвращает OK, если функция успешно выполнена, Error, если произошла ошибка.
%a [3] - расшифровка ошибки:
Succes - функция завершилась успешно. (%a [2]="OK")
First value: ERANGE - первый параметр за пределами допустимого значения.
Second value: ERANGE - второй параметр за пределами допустимого значения.
No sign: [символ] - знак математической операции не найден.

Пример:
set %a math.dbl (12.1 / 3)
log Результат вычислений: %a [1]
log Ошибка: %a [2]
log Текст ошибки: %a [3]

В плагин не следует передавать несколько математический операций, использовать скобки и т.д.
Функция должна принять только перечисленные выше параметры.
Если необходимо произвести какие-либо длинные математические вычисления,
то производите их до передачи параметров или используйте eval().
При работе с числами с плавающей точкой нужно понимать:
Расчет формулы «x2-y2» лучше вычислять используя формулу «(x-y)(x+y)».
В арифметике с плавающей запятой правило (a*b)*c = a*(b*c) не выполняется для любых арифметических операций.
Не все десятичные числа имеют двоичное представление с плавающей запятой. Например, число «9999999999.2» будет представлено как «9999999999.200001».
При сравнении чисел с плавающей точкой не корректно выражение:
a < b
Для подобного сравнения правильным будет сравнение разницы чисел с некоторой константой:
c = a - b
abs(c) < 0.1
0.1 взято для примера, точность вы можете задать самостоятельно.

Так же необходимо понимать, что использование чисел с плавающей точкой(в т.ч. их разницы) в пилоте
по средствам оператора if может быть не корректным.


Сообщение отредактировал DarkMaster - 2.4.2016, 10:17


Прикрепленные файлы
Прикрепленный файл  math.zip ( 3,85 килобайт ) Кол-во скачиваний: 1612


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
minfin
сообщение 27.11.2019, 8:00
Сообщение #2


*

Registred
Сообщений: 9
Регистрация: 26.1.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.206
Возраст: 29



ВАХ, спасибо БОЛЬШОЕ, Форсик.

трое суток учил Lua. = ото уж точно "продолжали грызть кактус"

список функций не полный. всё-равно костыль на костыле. не понятный скрипт в непонятном скрипте.

уже даже задумывался передавать через пилот в SQL, от туда считать через php.

и даже не думал что решится так просто.

U MAKE MY DAY.

позволь угостить тебя хорошим чаем. скинь реквы в личку.

<3
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 28.11.2019, 20:00
Сообщение #3


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2380
Пользователь №: 18.746



Цитата(minfin @ 27.11.2019, 8:00) *

ВАХ, спасибо БОЛЬШОЕ, Форсик.

U MAKE MY DAY.

minfin, рад, что тебе это облегчило жизнь, и благодарю за столь лестные слова в адрес моих трудов;))



--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
DarkMaster   Математические операции с плавающей точкой.   26.10.2015, 18:57
cirus   set %a math.dbl (12.1 / 3)   27.10.2015, 2:33
DarkMaster   Спасибо.   27.10.2015, 6:08
cirus   set %a math.dbl (1234,567 / 37) log %a ...   13.11.2015, 2:26
DarkMaster   Надо тыкать кнайта. Что-то не так с областями види...   13.11.2015, 11:14
DarkMaster   Проблема оказалась в изменении локали плагином для...   2.4.2016, 10:21
cirus   Так с точкой также результат 0.   2.4.2016, 10:41
DarkMaster   Дык в том то и фишка, что он запятую требует после...   2.4.2016, 10:49
cirus   Так плагин с точкой тоже должен работать. set %b W...   2.4.2016, 11:01
DarkMaster   Должен, пока другой плагин не подменил локаль. Сч...   2.4.2016, 11:22
cirus   Т.е. только перезагружать плагины? set %b WindowSt...   2.4.2016, 12:07
DarkMaster   Ну пока - да. Вообще могу под запятую быро скомпил...   2.4.2016, 12:18
FREEON   Есть в 2019 году способ умножения десятичных чисел...   15.6.2019, 1:19
Fors1k   Есть в 2019 году способ умножения десятичных чисе...   27.6.2019, 19:35
FREEON   Имеется в виду, что дробные числа будут только в ...   27.6.2019, 20:53
cirus   Плагин использовать или писать скрипт на луа.   15.6.2019, 2:26
FREEON   а чо когда выполняю такой код set %arr [1 13...   15.6.2019, 15:04
Fors1k   Задать бы как что бы после запятой или точки копи...   27.6.2019, 22:36
Fors1k   Нельзя ли отбросить лишнее отображение ок и трете...   7.7.2019, 4:02
cirus   В первом посте пример есть: set %a math.dbl (1...   15.6.2019, 19:08
FREEON   В первом посте пример есть: set %a math.dbl ...   15.6.2019, 19:40
cirus   Лучше луа для этого. Синтаксис пилота не слишком ...   15.6.2019, 20:44
Fors1k   Оставит после зяпятой нужное количество знаков, ил...   27.6.2019, 22:59
Fors1k   Пример 59,4/11+2,3*2 set %a math.dbl (59.4 / 1...   28.6.2019, 0:58
Fors1k   Ну наконец-то я придумал как это провернуть) https...   24.7.2019, 3:20
Cockney   "...плакали, кололись, но продолжали грызть к...   24.7.2019, 12:56
Fors1k   "...плакали, кололись, но продолжали грызть ...   24.7.2019, 14:40
DarkMaster   Lua   27.7.2019, 19:13
Fors1k   Lua Данный топик иммет какое-либо отношение к лу...   27.7.2019, 19:33
DarkMaster   Fors1k, не нужно воспринимать это так в штыки. Вы ...   27.7.2019, 23:58
Fors1k   И я буду вам благодарен Вроде доделал. ............   28.7.2019, 1:54
Fors1k   Добавил возможность через switch сделать ветвление...   2.8.2019, 0:23
Fors1k   Добавил условие неравенства. При повторном/многок...   15.8.2019, 18:44


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 27.4.2024, 22:06
Designed by Nickostyle