![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| arkady23 |
|
|||
|
Unregistered |
Народ, как в Delphi при делении округлять до сотых в большую сторону ?
допустим срока var a:real; begin a:=(Strtoint(Edit1.text))/3; Edit2.text:=Floattostr(a); end; Получилось число 2.5678998776 округлить нужно до 2.57 |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: нет Всего: 62 |
Если речь идет именно о сотых, то сначала умножаем 2.5678998776 на 100, затем вызываем Round, который округляет до ближайшего целого, потом делим на 100, преобразуем в строку и выводим.
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Но просто так Round может и не округлить
У него же "банковское" округление - если число то ли нечетное, то ли четное, округлить не в ту сторону. На community.borland.com решение от Borland http://community.borland.com/article/0,1410,16814,00.html function RoundUp(X: Extended): Extended; begin Result := Trunc(X) + Trunc (Frac(X) * 2); end; Ну а в остальном предыдущее сообщение номально работает. |
|||
|
||||
| аркадий |
|
|||
|
Unregistered |
Народ что сделать нужно в моём примере с Round и параметром "a" чтобы округлял в большую сторону ? Я не знаю как пользоватся Roundом .... скажите PLZ
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Возможно, я не прав, но если уж программировать приходится, то интересно все-таки подумать самому.
Round(a*100)/100. Ну к плавающему типу только Round надо привести. И все таки читайте документацию - RTFM. |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 2 Всего: 60 |
Вообще-то все проще: функция есть такая roundto т.е. Edit2.text:=Floattostr(roundto(a, -2)); Правда округлит она по правилам округления. Ежли нужно как то по другому округлить, то либо со строками работай либо проверку делай if ... then. -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Vit |
|
||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Прибавляешь 0.5 затем округляешь:
До сотых соответственно будет:
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||
|
|||||
| Аркадий |
|
|||
|
Unregistered |
Написал Edit2.text:=Floattostr(roundto(a, -2));
выдаёт ошибку [Error] Unit1.pas(71): Undeclared identifier: 'roundto' [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' VIT а что такое Uses Math; и где это писать ? |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
В любом модуле есть конструкция Uses. Поищи и ты найдёшь... Там список модулей которые используются, допиши туда Math (порядок не играет значения - в любое место, через запятую)
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 2 Всего: 60 |
Знаешь в Delphi есть такая интересная штука: выделяешь синим (курсором мыши) неизвестную функцию и нажимаешь F1. И.. о чудо открывается хелп с синтаксисом и названием модуля в котором эта функция находится (разумеется если эта ф-ция стандартная), если нет или написана с орфографической ошибкой тогда хелп откроется на оглавлении.
Извини за сарказм, но то, что все функции паскаля записаны в каких-то модулях должен знать даже начинающий программер. -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 2 Всего: 60 |
А не проще ли result:=roundto(num+0.005, -2); -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Проще, но библиотека Math довольно тормознутая и большая, нет большого смысла прикомпиллировать её и использовать если нужна только такая мелочь, впрочем можно конечно и так.
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 2 Всего: 60 |
Извини, но вообще-то я думал, что это опечатка. Как ты округлишь до сотых если переменная num будет иметь больше двух знаков после запятой (я имею ввиду без roundto) а она находится в Math как не крути. -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Нет там опечатки
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 2 Всего: 60 |
Твоя взяла
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |