Форум: "Основная";
Текущий архив: 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.49 MB
Время: 0.037 c