| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Round(); |
| Автор: ArtiSoft 12.12.2009, 13:02 | ||
| Привет всем, ребята как можно округлить вещественное число до 1000х, например число Х=3.8471236747623, и хочу преобразовать 4 знаков после точки; Х=3.8471. Вот я в пишу прогу таким образом:
Так нельзя, Есть варианты? |
| Автор: Данкинг 12.12.2009, 15:42 | ||
Есть глупый вариант, но вроде работающий:
|
| Автор: Guedda 12.12.2009, 15:43 |
Десятитысячных, ты хотел сказать. Если тебе необходимо это выводить в строку, то FloatToStrF тебе поможет. |
| Автор: amsoft 12.12.2009, 15:56 | ||
можно еще так:
Добавлено через 3 минуты и 20 секунд Данкинг, твой вариант подойдет, если перед запятой только одна цифра |
| Автор: Данкинг 12.12.2009, 17:36 |
| amsoft, да, действительно. Тогда надо позицию запятой определять. |
| Автор: Keeper89 12.12.2009, 17:59 | ||
ArtiSoft, ИМХО для переменных это смысла не имеет, а при выводе (в строку) можно делать как сказал Guedda или так:
|
| Автор: amsoft 12.12.2009, 19:39 | ||
набросал функцию:
, где X - округляемое число, Y - кол-во знаков после запятой |
| Автор: profesiachuvak 13.12.2009, 19:15 | ||||||
ArtiSoft, если round(); нельзя, то может быть можно roundto();?? Не знаю точно что Вам надо, но предложу: Общая форма фун-ции roundto() (модуль math):
Пример:
з.ы. Только помните про коварное Banker’s Rounding (бухгалтерское округление |
| Автор: Teleport 14.12.2009, 01:02 | ||
В своих проектах использую следующую функцию - никогда сбоев не замечал. И работает как ожидаешь. И никаких Banker’s Rounding
Поправлюсь: функция, которую я привел дает значения, отличные от значений калькулятора - после 9-го знака... Функция, которую привел amsoft - дает те же значения, что и калькулятор. |
| Автор: amsoft 14.12.2009, 07:42 | ||
Teleport, а так короче
|
| Автор: ArtiSoft 14.12.2009, 08:47 |
| Спасибо всем))) помогло |