Вниз
Скачать: CL | DM;

Как округлать числа в Delphi?   Найти похожие ветки 

← →
Ahmad ©   (2002-08-21 22:03) [0]

Как округлать числа в Delphi?
Если допустим стринг перевести в реал и разделить на дробное число, то в числе появляюстся много знаков после зяпятой может кто подсказать как этого избежать?


← →
Jeer ©   (2002-08-21 22:08) [1]

Не переводить и не делить.


← →
AL2002 ©   (2002-08-21 22:11) [2]

Round F1

Блин, почему на мой вопрос никто не хочет ответить?


← →
IronHawk ©   (2002-08-21 22:16) [3]

http://delphibase.endimus.com
Там про это много чего есть ....


← →
MBo ©   (2002-08-22 06:53) [4]

если это нужно для вывода, то см. Format, FormatFLoat и т.д.


← →
Sam Stone   (2002-08-22 08:55) [5]

выводить переменную в виде FloatValue:x:y,
где х - число цифр в числе, у - число цифр после запятой. По крайней мере перевод из флоата в стринг(если самому написать FloatToStr) реаизовать можно так:
function FloatToStr(value:extended):string;
var temp:string;
begin
str(value:5:5,temp);
FloatToStr:=Temp;
End;
Если не ставить после Value :5:5, то строка будет в виде х,ххх+хЕ


← →
c102011   (2002-08-22 12:04) [6]

Модуль округления чисел до требуемой точности после запятой
(модуль необходимо подключить в раздел uses формы)

unit Rounds;

interface

uses
SysUtils, Math;

Function RoundF(Value: Double; Precision:Integer):Double;

implementation

Function RoundF (Value:Double; Precision:Integer):Double;
var
N :String[1];
S, K :Integer;
begin
IF Value<0 Then
K:=-1
ELSE
K:=1;

Value:=Value*K;
S:=ROUND(Power(10, Precision));
N:= Copy(FloatToStr(Frac(Value)),Precision+3, 1);

IF N>="5" Then
Result:= (Trunc(Value*S)+1)/S*K
ELSE
Result:= ROUND(Value*S)/S*K;
end;

end.

{----------------------------------------------------------------
Пример округления до 3-х знаков после запятой:
Value:число или выражение типа TFloat

Вычисляемое поле POLE1 таблицы Table1
Table1POLE1.value:=RoundF(Value, 3)
Функция только округляет числа, не форматируя их вывод. Т.е. незначащие нули не отображаются. Для форматирования вывода можно использовать процедуру FormatFloat (возвращает строку).

Пример округления с форматированием:
POLE1:числовое поле

Table1POLE1.AsVariant:=FormatFloat(‘0.000’, RoundF(Table2POLE2.value, 3))

Edit1.Text:=FormatFloat(‘0.000’, RoundF(Table2POLE2.value, 3))
----------------------------------------------------------------}
этот модуль пришлось написать из-за того что делфи работает с плавающей запятой и не всегда можно получить один и тот же результат при делениии и округлении, например 2-х пар чисел, результат деления которых арифметически одинаков


← →
Вшсл   (2002-08-22 21:18) [7]

To 102011 >> Просвети, либо дай ссылочку на инфу, насчет того что очевидное:

function Round3(Value:Double):Double;
begin
Result:=Round(Value*1000)/1000;
end; -

хуже предложенного тобой. :-)



← →
SI-riuss ©   (2002-08-24 02:04) [8]

Все просто. Ты дели не знаком "/" а функцией "div".
Пример:
a/b=c - получишь дробное число
a div b = c - получишь округленное до целого число


← →
Ahmad ©   (2002-08-24 04:38) [9]

БОЛЬШОЕ ВСЕМ СПАСИБО!
НА ОСНОВЕ ВАШИХ ОТВЕТОВ МНЕ УДАЛОСЬ СОЗДАТЬ НЕСКОЛЬКО ДОРАБОТАННЫЙ TEdit, ЕДИНСТВЕННОЕ ЧТО НЕ ХВАТАЕТ ДЛЯ ПОЛНОГО ЧИСЛОВОГО ВИДА, ЭТО ВЫРАВНИВАНИЕ ТЕКСТА С ПРАВА, Т.Е. НУЖНО ПРИСОБАЧИТЬ СВОЙСТВО Alignment TEdit"у, КАКИМ ОБРАЗОМ ЭТО МОЖНО СДЕЛАТЬ?
ЕЩЕ РАЗ ВСЕМ СПАСИБО!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
1-14005
EugenCFG
2002-08-26 10:22
2002.09.05
Мастера... подскажите... Можно ли TMemo сделать как TEdit


3-13977
Димон1
2002-08-16 12:39
2002.09.05
В mssql вставить в поле типа image данные из другой строки


1-14114
delphiguru
2002-08-23 19:30
2002.09.05
WinExec и ShellExecute


3-13942
Igor
2002-08-15 20:49
2002.09.05
просмотр длинной таблицы


3-13952
Роман Фадеев
2002-08-16 11:10
2002.09.05
Можно ли декорировать выводимое значение поля в SELECT -запросе?




   Наверх