![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
округление 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