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

 
Ответить в эту темуОткрыть новую тему
> Преобразование переменных
Cockney
сообщение 20.10.2015, 23:06
Сообщение #1


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



Здравствуйте, интересует вопрос о преобразовании переменных в другой тип. Требуется перевести строку(содержит число) в числовой тип. Что можете предложить?

Нашел решение (IMG:style_emoticons/default/smile.gif) невнимательно справку прочитал...


Оставлю решение тут, может кому потребуется....


set $q 100 //число в строковой переменной
set #n $q //числовая переменная
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 21.10.2015, 21:48
Сообщение #2


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



не знаю почему, но иногда set #n $s не помогает. в n кладется 0, а не значение из строки, а вот set #n $s + 0 работает всегда. в n число из строки.




//не хотелось бы засорять форум, задам еще один небольшой вопрос. Реально ли разделить с остатком два целых числа?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 22.10.2015, 0:59
Сообщение #3


***********

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



Цитата
Реально ли разделить с остатком два целых числа?

Самый простой вариант - умножить делимое, скажем, на 1000. Таким образом получим 3 знака дополнительной точности. Если есть необходимость, то их можно потом откусить в отдельную переменную.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 23.10.2015, 21:18
Сообщение #4


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



умножить не представляется возможным, числа большие получаются. Есть еще варианты?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 24.10.2015, 3:02
Сообщение #5


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Можно через калькулятор. Правда придётся вытаскивать его на передний план чтоб результат в буфер скопировать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 24.10.2015, 4:34
Сообщение #6


***********

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



Цитата
умножить не представляется возможным, числа большие получаются. Есть еще варианты?

выходят за пределы 32 бит? это что же такое считать надо... госдолг сша?)
Код
set #x 1000000000
set #y 123
set #d #x / #y             // целая часть от деления.
set #o #x - #d * #y         // остаток от деления.
set #m #o * 1000 / #y      // дробная часть длинной до 3 знаков.


Сообщение отредактировал DarkMaster - 24.10.2015, 12:55


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 24.10.2015, 12:39
Сообщение #7


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
set #o #x - #d * y // остаток от деления.

В конце #y.

Придётся дописывать условие для чисел, у которых дробная часть начинается с 0.
1234 / 56 = 22,035, а в скрипте получится 22,35.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 25.10.2015, 22:12
Сообщение #8


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



Цитата(DarkMaster @ 24.10.2015, 4:34) *

выходят за пределы 32 бит? это что же такое считать надо... госдолг сша?)
Код

set #m #o * 1000 / #y      // дробная часть длинной до 3 знаков.




такты процессора(.


Стало быть, больше 3х знаков дробной части не получится выжать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 25.10.2015, 23:12
Сообщение #9


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Стало быть, больше 3х знаков дробной части не получится выжать?

Деление в столбик никто не отменял, можно хоть сколько знаков после запятой посчитать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 26.10.2015, 3:48
Сообщение #10


***********

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



Цитата
Стало быть, больше 3х знаков дробной части не получится выжать?

Почему же?
Цитата
set #m #o * 1000 / #y // дробная часть длинной до 3 знаков.

Вместо 1000 вводим число с нужным количеством нулей. Ограничением тут является то, что #y * 10^n не должен превышать максимального значения int.

// Могу дать бетку. Там вроде из-за адаптации к чтению 64 битных процессов числовые переменные теперь имеют формат int64.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.10.2015, 12:18
Сообщение #11


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Попробуйте, вроде работает.
код
Код
set linedelay 0
log mode compact

set #a 123456789     //делимое число
set #b 987653          //делитель

set #c #a / #b
set #d #a - #c * #b
set $aaa #c,
set %a [1] #d
if #d = 0
   log #a / #b = #c
else
for #i 1 20               //количество знаков после запятой
   set %a [3] %a [1]0
   set %a [2] %a [1]0 / #b
      if %a [2] = 0
         set %a [4 #i] 0    
         set %a [1] %a [1]0    
      else
         set %a [4 #i] %a [2]
         set %a [1] %a [3] - %a [2] * #b
      end_if
end_for
   log #a / #b = $aaa%a [4]
end_if
stop_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 26.10.2015, 17:30
Сообщение #12


***********

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



Засунуть в папку плагин, тестить, радоваться жизни.
Принимать результат должен массив. В параметрах два числа и знак операции между ними.

Сообщение отредактировал DarkMaster - 26.10.2015, 20:15


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


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 26.10.2015, 21:12
Сообщение #13


********

Master
Сообщений: 1.394
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 20893
Пользователь №: 16.156



Плагин не тестил. Полностью (пока) удовлетворил скрипт). Если будет нужда, опробую, отпишусь.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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