![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 2 Всего: 60 |
Ребята! Помогите, пожалуйста, попроще решить задачу: нужно округлить десятичную дробь до заданного кол-ва знаков после запятой, но так, что бы в случае если изначальное число не имеет такой разрядности в ее конец добавлялись нули до нужной длины? Прим. (roundto убирает лишние цифры но не добавляет не достающие).
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
недостающие цифры убираются всегда.
Например: I:=2.100000000; Showmessage(floattostr(i)); покажет 2.1 Так что добавление нулей к числовым типам бессмысленно. Используйте строки, для формирования строки используйте команду Format - она может обрезать (не округлять) числа до нужного количества знаков и добавлять недостающие нули. См. хэлп по этой команде -------------------- 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 |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Вот тебе например с точностью до 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 |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Вот алгоритм написал за 5 минут, корявый, наверное, и неэффективный, впрочем судить вам
Это сообщение отредактировал(а) Alex - 12.8.2005, 08:10 -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Ага, только функции ^ в Дельфи нет (точнее она обозначает совсем другое), и обрезать то она обрезает, только нули не доставляет, как автор просил... А для округления надо использовать Round а не Int (или на крайняк добавлять 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 |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Вит, извини, я сделал ошибку, но сразу ее увидел. И когда исправлял, твоего сообщения еще не было. Так должно работать.
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Если у тебя число 2.3, то в памяти оно хранится точно так же как и 2.30000 (в типе Real). А если ты хочешь, чтобы функция возвращала еще и нули, то надо возвращать указатель на строку, в которой это число. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Знаешь, а мой код компактнее Format('%.5f',[i]) PS. ^ - это не возведение в степень. Это либо обозначения типа указателя: Type PMyBool=^Boolean; Либо обращение к содержимому по адресу: var a:boolean b:^boolean; ... a:=b^; -------------------- 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 |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Твои код только выводит с нулями, а мой округляет нужное количество цифр. Внимательно прочитай.
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| 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 |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
А вот в старом пасе была ф-ция Str:
PReal: real; buf: string; ... Str(PReal:3:4,buf); И все ?! -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Можно и так, только она обрежет, а не округлит, собственно Format использует тот же механизм что и Str, только возможностей там больше...
-------------------- 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 |
|||
|
||||
| neutrino |
|
||||||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
А код этой функции не приведешь (roundto, несмотря на то что она, скорее всего, стандартная)? В принципе она делает тоже что и моя или нет?
Только вот в задачах лучше использовать свои функции, оптимизированные под поставленную задачу. А все удобство требует память и время для обработки. -------------------- The truth comes from within ... Покойся с миром, Vit |
||||||
|
|||||||
| 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 |
|||
|
||||
![]()
|
| Правила форума "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. |