Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.033 c
1-1098686822
Last
2004-10-25 10:47
2004.11.07
Как задавить нажатие клавиши Enter?


1-1098364730
Mishenka
2004-10-21 17:18
2004.11.07
TTreeNode...


14-1097656240
Семен Сорокин
2004-10-13 12:30
2004.11.07
Пейнтбол


4-1096620777
thoth
2004-10-01 12:52
2004.11.07
что не так?


1-1098297101
Anonimus
2004-10-20 22:31
2004.11.07
TPageControl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский