Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2017, 09:56   #1
Gidus
 
Регистрация: 13.06.2017
Сообщений: 5
По умолчанию Что в паскале делают функции trunc и round?

/*-*\
Gidus вне форума Ответить с цитированием
Старый 20.06.2017, 09:59   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

trunc - выделение целой части. trunc(5.8) = 5
round - округление числа до ближайшего целого. round(5.8) = 6

Примечания: С отрицательными числами они могут работать с ошибками:
trunc(-5.8) = -5
round(-5.5) = -6

Безымянный.png
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 20.06.2017 в 10:12.
newerow1989 вне форума Ответить с цитированием
Старый 20.06.2017, 10:08   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
С отрицательными числами они могут работать с ошибками
С какими? Пример в студию ))

ADD

И что в примере не так? Целая часть -5.8 разве не -5? Да и округление чем не понравилось?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.06.2017 в 10:45.
Аватар вне форума Ответить с цитированием
Старый 20.06.2017, 10:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
round(-5.5) = -6
и в чём ошибка?
Вы знаете, что такое ОКРУГЛЕНИЕ?

ну, например, округление до целых чисел, если нам дано число 5.95 то какое ЦЕЛОЕ число будет к нему ближайшим ? наверное, 6 ?!
А если нам дано число -5.95 то какое ЦЕЛОЕ число будет к нему ближайшим? наверное, -6 ?!
Что не так?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.06.2017, 11:04   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Добавлю, что round округляет банковским способом https://ru.wikipedia.org/wiki/Округл...BE.D0.BC.D1.83
2.5 = 2, а 3.5 = 4
eoln вне форума Ответить с цитированием
Старый 20.06.2017, 11:07   #6
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Код:
С отрицательными числами они могут работать с ошибками
это в микрокалькуляторах МК-61 была ошибка, -5.5 "выделяло целое" до -5, хотя верно -6.

Операция математического "выделения целого" дает значение "не больше" исходного. Т.е. целое от -5.1 = -6

Но trunc и round - это не "выделение целого", в спецификации четка описано, что они делают.

Последний раз редактировалось alexzk; 20.06.2017 в 11:16.
alexzk вне форума Ответить с цитированием
Старый 20.06.2017, 11:28   #7
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Если взять источник http://xoops.ws/modules/instruction/page.php?id=934
Цитата:
Нужно помнить, как округляются отрицательные числа. В результате операции floor (-1.1) получим -2 как следующее меньшее целое число, а не -1. Аналогично, в результате ceil (-2.5) получим -2.
Не только PHP, но и язык C, C++ таким образом округляют.

Программа Excel вычисляет целые числа так: ЦЕЛОЕ(-5,6) = -6
Округление: ОКРУГЛ(-5,5;0) = -6
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 20.06.2017, 11:52   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

С таким же успехом можно сказать, что в Excel и прочее с ошибками. Если в бухгалтерии у меня красный остаток -2.01, то с какого перепуга его округлять до -3?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.06.2017, 12:29   #9
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

В общем, не могу найти как правильно округлять отрицательные числа с дробной частью 0,5!
-3,5 округляется до -4 или до -3?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 20.06.2017, 12:31   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
-3,5 округляется до -4
Так должно, к ближайшему четному, если банковское округление. Кстати RoundTo чудесит с банковским округлением
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.06.2017 в 12:36.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что делают эти функции ? RAFA91 Общие вопросы C/C++ 4 27.01.2015 13:47
Что делают эти команды? Glaciuse Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 22.11.2012 04:18
до каких чисел округляет функция round в Паскале ABC& Настяyu Помощь студентам 5 28.12.2011 18:18
Delphi калькулятор. не могу понять что делают эти функции!!! Настюшка_11 Помощь студентам 2 26.12.2011 20:54
что делают функции CodeNOT Общие вопросы C/C++ 5 19.05.2011 15:24