Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Округление   Найти похожие ветки 

 
V l a d i m i r   (2004-10-21 13:42) [0]

Добрый день! С помощью какой функции можно округлить число с точностью до сотых?


 
WondeRu ©   (2004-10-21 13:43) [1]

a := Round(f * 100) / 100


 
TUser ©   (2004-10-21 13:43) [2]

round, *, /, div
Format - если для показывания пользователю.


 
TUser ©   (2004-10-21 13:49) [3]

div - эт я того, погорячился


 
Anatoly Podgoretsky ©   (2004-10-21 14:08) [4]

Если речь о числах с плавающей запятой, то не реально никакими методами, такое возможно только для чисел с фиксированой запятой, а с плавающей большинство чисел просто не возможно представить точно.


 
TUser ©   (2004-10-21 14:20) [5]


> то не реально никакими методами

Почему, если просто на лабеле отобразить - то реально.


 
GuAV ©   (2004-10-21 14:36) [6]


> Почему, если просто на лабеле отобразить - то реально.

На лабеле обычно либо число с фиксированой запятой, либо с плавающей запятой в десятичном формате, а не двоичное число с плавающей запятой.

одну сотую невозможно представить двоичное число с плавающей запятой с конечным числом значащих знаков.


 
Anatoly Podgoretsky ©   (2004-10-21 15:14) [7]

TUser ©   (21.10.04 14:20) [5]
А это уже не округление, а изображение, отформатированое.

GuAV ©   (21.10.04 14:36) [6]
И две сотых тоже, а также все производные от них умноженные- деленые на степень два, и таких чисел множество.


 
GuAV ©   (2004-10-21 15:35) [8]


> и таких чисел множество.

Если я правильно понимаю, то из чисел содержащих не более двух знаков после запятой представить точно как двоичное число с плавающей запятой можно только те, которые содержат после запятой 00 25 50 или 75.


 
XProger ©   (2004-10-21 19:11) [9]

round - не округление как Вы его обычно представляете
К примеру round(3.5) = 4, а round(2.5) = 2 (!!!)

Ну и как Вам такое? ;)


 
GuAV ©   (2004-10-21 19:47) [10]

XProger ©   (21.10.04 19:11) [9]
Ну и как Вам такое? ;)

Меня вполне устраивает
А кого не устраивает - Round+F1+See also

Кстати там увидел  SimpleRoundTo - как раз реализует [0]


 
Koala ©   (2004-10-21 19:50) [11]

{**********************************************************
*  Created by:     Пчелка@
*  Date Created:   04/10/2004
http://delphimaster.net/view/1-1096192293/
*  Input:          x - число кот. округляем, k - сколько знаков после запятой
*  Description: Функция округления
**********************************************************}
function RealRound(x:real{что округляем};
                  k:byte{ск-ко знаков после запятой будет}):real;
var p:real;
begin
p:=x*power(10,k);
if ((p-trunc(p))>=0.5) then
RealRound:=(trunc(p)+1)/power(10,k)
else RealRound:=trunc(p)/power(10,k)
end;

Округляет правильно....


 
Anatoly Podgoretsky ©   (2004-10-21 22:47) [12]

Окруугляет правильно, но вот записать не может,
смотри GuAV ©   (21.10.04 15:35) [8] и прочее.
И потренируйся на 0.01 для Single, Double, Extended


 
Shama_n ©   (2004-10-25 11:55) [13]

round - не округление как Вы его обычно представляете
К примеру round(3.5) = 4, а round(2.5) = 2 (!!!)

Ну и как Вам такое? ;)


Условие "ближайшее к х" не работает, если верхнее и нижнее значения оказываются равноудаленными (например, если дробная часть точно равна 0,5). В этих случаях Delphi перекладывает решение на операционную систему. Обычно процессоры Intel решают эту задачу в соответствии с рекомендацией IEEE округлять в сторону ближайшего четного целого числа


 
BillyJeans   (2004-10-25 11:58) [14]

SimpleRoundTo()


 
Symb   (2004-10-25 14:42) [15]

Если для того, чтобы отобразить как строку, то (с некоторой степенью точности) -- FloatToStrF.


 
Shama_n ©   (2004-10-25 15:33) [16]

Я обычно так округляю:

function BFRoundToX(RoundValue:currency;X:Currency):Currency;
var
QuantityX: integer;
RoundToNull: currency;
begin
QuantityX := Trunc(RoundValue/X);
RoundToNull := X * QuantityX;
if RoundValue < (RoundToNull + X/2)
then Result := RoundToNull
else Result := RoundToNull + X;
end;


X- до кратного какому числу округлять
1- до целых, 0,01- до сотых, 10- до кратного 10 и.т.д.



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

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.049 c
14-1097939379
Луарвик
2004-10-16 19:09
2004.11.07
Обитель зла: музон


1-1098512991
Леван
2004-10-23 10:29
2004.11.07
Как изменить цвет фона определенного участка Richedit


3-1097473238
Its
2004-10-11 09:40
2004.11.07
DBGrid


3-1097199322
Black
2004-10-08 05:35
2004.11.07
Как узнать какая строка в DBGrid е выбрана?


9-1088766735
Sanek_metaller
2004-07-02 15:12
2004.11.07
Дурак