Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

округление Extended. [D7, WinXP]


ArtemESC ©   (2005-10-08 18:38:00) 

Доброго времени суток...
Как округлить Extended до некоторого фиксированного
знака после запятой?


wp2   (2005-10-09 19:07:00) [1]

Round(x*100)/100 - до сотых
Round(x*1000)/1000 - до тысячных

и т.д.


murzik   (2005-10-08 23:33:00) [2]

нет, это я где-то позаимствовал


GuAV   (2005-10-08 23:24:00) [3]

murzik   (08.10.05 23:16) [4]

Не Ваше ли творенье http://kladovka.net.ru/index.cgi?pid=list&rid=190?


murzik   (2005-10-08 23:16:00) [4]

Function RoundEx(X: Extended; DigitsAfterPoint: Byte = 0): Extended;
Begin
Result := StrToFloat(Trim(Format('%20.' +
                     IntToStr(DigitsAfterPoint) + 'f', [X])));
End;


Карелин Артем   (2005-10-08 19:57:00) [5]

ShowMessage(FormatFloat('#####0.####',35.222222));


GuAV   (2005-10-08 19:14:00) [6]

До десятичного - вообще говоря, никак. До двоичного - умножением, усечением и делением. До десятичног приблизительно - roundto.
Обычно округление не требуется, лишние знаки отбрасываються уже при форматировании числа в строку.


GanibalLector   (2005-10-08 19:13:00) [7]

  RoundTo

Example :
var E:Extended;
begin
 E:=45.8574848;
 Caption:=FloatToStr(RoundTo(E,-2));


Хотя...с другой стороны :

function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;

и в то же время :
Type Range Significant digits Size in bytes

Double 5.0 x 10^–324 .. 1.7 x 10^308 15–16 8
Extended 3.6 x 10^–4951 .. 1.1 x 10^4932 19–20 10


Наверх

Титульная страница Поиск, карта сайта Написать письмо