Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизПравильное округление числа Найти похожие ветки
← →
serg128 (2005-11-02 19:24) [0]Суть такова:
есть число с плавающей точкой,
var
r : real;
begin
...
r := 3.1415285;
...
Как его округлить до 2х знаков после запятой, т.е. если третий разряд больше 6, то второй разряд соотв на 1 больше, и ссотв. наоборот, если третий разряд меньше 5,то второй разряд остаётся без изменений (как в школьной математике)?
← →
Erl (2005-11-02 19:28) [1]Держи:
function RoundFloatPoint(R: Extended; Decimals: Integer): Extended;
var
Factor: Extended;
begin
Factor := Int(Exp(Decimals * Ln(10)));
Result := Round(Factor * R) / Factor;
end;
← →
Fay © (2005-11-02 19:29) [2]2 serg128 (02.11.05 19:24)
А еслитретий разряд in [5, 6]
?
← →
Baltika-34 (2005-11-02 19:43) [3]
function MyRound(X:Double; N: Integer): Double;
var
i,n1: Integer;
begin
Result := X;
n1 := 1;
for i := 1 to N do n1 := n1*10;
result := Trunc(Result*n1+0.5)/n1;
end;
← →
Sergey Masloff (2005-11-02 20:03) [4]Учите матчасть господа
RoundTo() - Банковское округление
SimpleRoundTo() - Школьное
← →
Baltika-34 (2005-11-02 20:07) [5]Sergey Masloff (02.11.05 20:03) [4]
Sergey Masloff
Ну, как говорится - век живи, век учись.
В D5 вроде не было этой функции.
← →
wp2 © (2005-11-02 20:25) [6]r := Round(r*100)/100;
← →
Anatoly Podgoretsky © (2005-11-02 21:32) [7]А что должно делаться если равно 5 или 6?
← →
DELORAC © (2005-11-03 09:52) [8]> Anatoly Podgoretsky
Обнуляться... :-)
> serg128
Вообще то по правилам школьной математики, если следующий после округляемого разряд >=5, то округляем в большую сторону, иначе в меньшую...
1.235, 1.236, ..., 1.239 --> 1.24
1.230, 1.231, ..., 1.234 --> 1.23
← →
Max Zyuzin © (2005-11-07 10:37) [9]>Sergey Masloff (02.11.05 20:03) [4]
Сегодня столкнулся с "забавной" штукой...
Функция Round(554098.5) возвращает 554098 Что ечть правильно.... а
Функция SimpleRoundTo(5540.985,-2); возвращает 5540.98 что есть интересно, с учетом того что написано про нее в хелпе...
← →
DELORAC © (2005-11-07 10:56) [10]Забавно, что Round(1.5) возвращает 2, а Round(10,5) возвращает 10, что бы это могло значить?
← →
begin...end © (2005-11-07 11:05) [11]> DELORAC © (07.11.05 10:56) [10]
In Delphi, the Round function rounds a real-type value to an integer-type value.
X is a real-type expression. Round returns an Int64 value that is the value of X rounded to the nearest whole number. If X is exactly halfway between two whole numbers, the result is always the even number. This method of rounding is often called "Banker’s Rounding".
← →
Max Zyuzin © (2005-11-07 11:05) [12]>DELORAC © (07.11.05 10:56) [10]
Это как раз все правильно значит, читай хелп... "банковское округление"
← →
SergP. (2005-11-07 13:14) [13]
> SimpleRoundTo() - Школьное
Оказывается бывает еще и Школьное округление...
← →
Sergey_Masloff (2005-11-07 14:03) [14]SergP. (07.11.05 13:14) [13]
>Оказывается бывает еще и Школьное округление...
Представь себе, это довольно устоявшийся термин. Причем даже забугорные товарищи понимают о чем речь.
← →
Max Zyuzin © (2005-11-07 16:19) [15]>Sergey_Masloff (07.11.05 14:03) [14]
Тем не менее Max Zyuzin © (07.11.05 10:37) [9] есть какие нить соображения?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c