Page 1 of 1

Округление и отбрасывание целой части...

Posted: 2006-04-12 14:41:51
by DerMeister =)
Подскажите как округлить и отбросить челую часть числа...

Posted: 2006-04-12 14:54:19
by Sanch
Взять учебник по матиматике класс этак 6 и посмотреть или подробнее обьяснить что ты хочешь, тк на скок я знаю инжект предназначен для работы с натуральными числами, хотя я могу ошибаться.

Posted: 2006-04-12 15:03:16
by Destruction
Sanch wrote:Взять учебник по матиматике класс этак 6 и посмотреть или подробнее обьяснить что ты хочешь, тк на скок я знаю инжект предназначен для работы с натуральными числами, хотя я могу ошибаться.

uo.print(str(7/2)) ; проверь

Posted: 2006-04-12 15:05:05
by DerMeister =)
Sanch wrote:Взять учебник по матиматике класс этак 6 и посмотреть или подробнее обьяснить что ты хочешь, тк на скок я знаю инжект предназначен для работы с натуральными числами, хотя я могу ошибаться.


Мля, я спрашиваю как это сделать в инжекте. Почти во всех языках программирования есть всроенная функция округления. НАсчет натуральных чисел я тоже ничего не знаю, если это так то всё намного проще.
Кароч, пиши по делу, а то ты ведь всего 2 недели скрипты пишешь и уже типо бог чтоль?
ЗЫ: Тем более я не алгоритм округления спрашивал, а то как это в инжекте сделать(командой). Просто надоело в формулировке вопроса каждый раз добавлять "...в инжекте"

Posted: 2006-04-12 15:08:41
by DerMeister =)
Destruction wrote:
Sanch wrote:Взять учебник по матиматике класс этак 6 и посмотреть или подробнее обьяснить что ты хочешь, тк на скок я знаю инжект предназначен для работы с натуральными числами, хотя я могу ошибаться.

uo.print(str(7/2)) ; проверь


Проверил: БУДЕТ 3.5

Так что ,Sanch, сначала сам проверь, потом говори!

Posted: 2006-04-12 15:09:44
by DerMeister =)
Так как округлить то? Или нету такой команды? :)

Posted: 2006-04-12 15:33:52
by Sanch
пиши по делу, а то ты ведь всего 2 недели скрипты пишешь и уже типо бог чтоль

Нет, мне просто был непонятен твой вопрос.

Posted: 2006-04-12 16:10:08
by DerMeister =)
Делать было нечего и я выяснил, что:
1)Инжект хранит 6 знаков после запятой... (в окресности нуля(т.е. не в експоненциальной форме) (не знаю как по умному сказать :( )
2)Выяснил как ему сунуть число в експоненциальной форме: 1.234567890e+123
3)Максимальное число которое инжект понимает это 1.7976931348623159078e+308 (тоесть 2 в 1024 степени не считая цифр дальше 19 разряда {я так понимяю что тут дело в том что 0.1 нельзя записать в виде числа с плавающей запятой} [хотя для некоторых чисел он цифры после 14 разряда не воспринимает]) :)
4)Выяснил наиболее близкое число к нулю: 0.1e-5
5)Минимальное число: -1.7976931348623159078e+308

Posted: 2006-04-12 16:25:17
by Edred
Der wrote:
Sanch wrote:Почти во всех языках программирования есть всроенная функция округления.


Автор скриптового модуля в доке пишет: "Язычок". Не "язык программирования", а язычок. И в этом "язычке" есть только:

Code: Select all

Константы:

TRUE
FALSE
PI

Библиотечные функции:

SIN
COS
STRLEN  - длина строки
LEN - длина строки
STR(число, кол-во знаков после запятой) - число в строку
STR(число) - число в строку
VAL - строку в число
INT(число) - == floor()
IsString(аргумент)   - TRUE, если аргумент - строка
IsNumber(аргумент)   - TRUE, если аргумент - число
   - ^^ полезны, например для определени типа переменной FatalError
IsArray
IsClass

StrToMoney(строка)   - возвр. число, соотв. строке денег
MoneyToStr(число_денег, ширина_ячейки, выравнивание, знаков_после_запятой)

Date(строка) - возвр. число, соответствующее заданной дате. Формат строки: "dd/mm/yyyy"
или "d/m/yy", главное, чтоб не было пробелов.
Date(день, месяц, год) - то же самое. Возвращенная дата - число дней с 30/12/1899
DateToStr(дата_как_число) - вернуть строку, соотв. дате
DateToStr(дата_как_число, ширина) - если ширина 8, будет dd/mm/yy, если >=10 dd/mm/yyyy.
Если <8 - будут звездочки.
Day(дата_как_число) - вернуть день данной даты
Month(дата_как_число)
Year(дата_как_число)
IsLeapYear(год) - true, если год - високосный

FormatStr(строка,ширина)
FormatStr(строка,ширина,не_показывать_точки) - урезать/расширить строку до данной
ширины. Если строка длиннее - последние 3 символа будут "...", если
не_показывать_точки==false или опущено.

LTrim - убрать пробелы слева
RTrim - справа
Trim - слева и справа

Left(строка,число букв) - как в Basic
Right(строка,число букв)


Так что возьми Str() и вторым аргументом пусти кол-во знаков после запятой... :wink:

Posted: 2006-04-12 16:28:05
by Edred
типа:

Code: Select all

x = 2,54
y = x - val( str( x, 0 ) )
UO.Print( str( y ) )


Попробуй...

Хм, а может тебе Int() попробовать? :shock:

Posted: 2006-04-12 16:33:26
by DerMeister =)
Так что возьми Str() и вторым аргументом пусти кол-во знаков после запятой...

Спасибки Edred... :P :P :P :P
А чтож ты нигде не прибьешь на форуме эту инфу???
Еще интересны команды общения с файлами, может это тож у тебя есть?

Posted: 2006-04-12 16:40:24
by DerMeister =)
Edred wrote:типа:

Code: Select all

x = 2,54
y = x - val( str( x, 0 ) )
UO.Print( str( y ) )


Попробуй...

Хм, а может тебе Int() попробовать? :shock:


Code: Select all

str(int(x))
- округляет, причем именно так как мне и надо - отбрасывает дробную часть...

Code: Select all

str( x, 0 )
- округляет по математическим правилам: если <5 то в меньшую, если >5 то в большую...

Еще раз спасибки...

Posted: 2006-04-13 00:42:57
by Edred
Der wrote:А чтож ты нигде не прибьешь на форуме эту инфу???
Еще интересны команды общения с файлами, может это тож у тебя есть?


Дык это же из доки, которая идет в комплекте с скриптовым модулем... или, по крайней мере, когда-то шла. Откуда-то же я ее взял? :shock:

Файлы:

1. Стандартный способ, через класс:

Code: Select all

Класс FILE:
пример:
sub main()
  var f=file("c:\имя файла")
  var s=0
  f.open()
  while not f.eof() and not fatal error
    s=safe call f.readnumber()
    if not fatal error then
      dbgmsg(s)
    endif
  wend
  f.close()
endsub

Методы класса:
  File(имя файла) - конструктор
  Open()   - открыть на чтение/запись. Возвращает true==открылся удачно
  Create()   - затереть файл. Возврат так же
  Eof()      - true == конец
  ReadLn()   - возвращает строку из файла. Строку полностью!!!
  ReadString()   - возвр. слово из файла до пробела/TAB
  ReadNumber() - число
  Write(строка/число) - запись строки/числа в файл.
  WriteLn(строка/число) - запись строки/числа в файл+перевод строки.
  WriteLn()   - просто запись перевода строки
  Close()   - закрыть файл и освободить память из-под класса. После вызова Close() с
файлом больше работать нельзя (даже вызвав Open).


2. Работа с файлами есть (более удобная) в АСМе. Частично документированная, частично - фиг. Как АГРС выложит свежую версию, с докой разберемся...

Posted: 2006-04-13 00:52:09
by Edred
Кстати, тема-то есть такая в ФАКе.
viewtopic.php?t=805
правда, там всего один файл вывален, а у меня их пяток... :shock:

Posted: 2006-04-13 01:01:05
by flake
Так сделай доброе дело, выложи остальные :)