Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.013 c
2-1131525508
galexis
2005-11-09 11:38
2005.11.27
Не выводятся данные в DBGrid


9-1121200003
Turkish
2005-07-13 00:26
2005.11.27
Помогите чем сможите


4-1127384308
Still Swamp
2005-09-22 14:18
2005.11.27
Как получить Handle активного окнавне моего процесса


2-1131597121
Yus
2005-11-10 07:32
2005.11.27
Удалить директорию


2-1131805105
Olga_b
2005-11-12 17:18
2005.11.27
ПРОПИСНЫЕ БУКВЫ!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский