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

Ask for help

Moderators: Murderator+, Murderator

Post Reply
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

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

Post by DerMeister =) »

Подскажите как округлить и отбросить челую часть числа...
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Взять учебник по матиматике класс этак 6 и посмотреть или подробнее обьяснить что ты хочешь, тк на скок я знаю инжект предназначен для работы с натуральными числами, хотя я могу ошибаться.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Sanch wrote:Взять учебник по матиматике класс этак 6 и посмотреть или подробнее обьяснить что ты хочешь, тк на скок я знаю инжект предназначен для работы с натуральными числами, хотя я могу ошибаться.

uo.print(str(7/2)) ; проверь
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Sanch wrote:Взять учебник по матиматике класс этак 6 и посмотреть или подробнее обьяснить что ты хочешь, тк на скок я знаю инжект предназначен для работы с натуральными числами, хотя я могу ошибаться.


Мля, я спрашиваю как это сделать в инжекте. Почти во всех языках программирования есть всроенная функция округления. НАсчет натуральных чисел я тоже ничего не знаю, если это так то всё намного проще.
Кароч, пиши по делу, а то ты ведь всего 2 недели скрипты пишешь и уже типо бог чтоль?
ЗЫ: Тем более я не алгоритм округления спрашивал, а то как это в инжекте сделать(командой). Просто надоело в формулировке вопроса каждый раз добавлять "...в инжекте"
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Destruction wrote:
Sanch wrote:Взять учебник по матиматике класс этак 6 и посмотреть или подробнее обьяснить что ты хочешь, тк на скок я знаю инжект предназначен для работы с натуральными числами, хотя я могу ошибаться.

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


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

Так что ,Sanch, сначала сам проверь, потом говори!
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Так как округлить то? Или нету такой команды? :)
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

пиши по делу, а то ты ведь всего 2 недели скрипты пишешь и уже типо бог чтоль

Нет, мне просто был непонятен твой вопрос.
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post 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
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post 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:
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

типа:

Code: Select all

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


Попробуй...

Хм, а может тебе Int() попробовать? :shock:
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

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

Спасибки Edred... :P :P :P :P
А чтож ты нигде не прибьешь на форуме эту инфу???
Еще интересны команды общения с файлами, может это тож у тебя есть?
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post 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 то в большую...

Еще раз спасибки...
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post 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. Работа с файлами есть (более удобная) в АСМе. Частично документированная, частично - фиг. Как АГРС выложит свежую версию, с докой разберемся...
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Кстати, тема-то есть такая в ФАКе.
viewtopic.php?t=805
правда, там всего один файл вывален, а у меня их пяток... :shock:
flake
Expert!
Posts: 746
Joined: 2004-08-11 23:56:17
Location: The Citadel
Contact:

Post by flake »

Так сделай доброе дело, выложи остальные :)
Post Reply