Главная страница
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.048 c
9-1089613573
Sancho
2004-07-12 10:26
2004.11.07
Разработка сценария игры


1-1098372178
Rasp
2004-10-21 19:22
2004.11.07
как установить компонент имеющий три файла: *.dcu,*.dcr,*.pas?


14-1098432889
ZEX
2004-10-22 12:14
2004.11.07
Stream - новое поколение


6-1093957135
calmterror
2004-08-31 16:58
2004.11.07
idHTTP - отсоединение от сервера


8-1091816507
parovoZZ
2004-08-06 22:21
2004.11.07
DirectInput and DirectX9