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

Вниз

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

 
denis24   (2004-02-12 19:00) [0]

Как округлить 2,635 до 2,64?


 
clickmaker   (2004-02-12 19:07) [1]

round(2.635 * 100) / 100


 
heady   (2004-02-12 19:09) [2]

function RoundEx(X: Double; Precision: Integer ): Double;
{
Precision :
1 - до целых
10 - до десятых
100 - до сотых
...
}
var
ScaledFractPart, Temp: Double;
begin
ScaledFractPart := Frac(X) * Precision;
Temp := Frac(ScaledFractPart);
ScaledFractPart := Int(ScaledFractPart);
if Temp >= 0.5 then
ScaledFractPart := ScaledFractPart + 1;
if Temp <= -0.5 then
ScaledFractPart := ScaledFractPart - 1;
RoundEx := Int(X) + ScaledFractPart / Precision;
end;

(с) DelphiWorld


 
denis24   (2004-02-12 19:20) [3]

так то оно так,но на разных машинах или 2,63(на 98 винде) а пробую у себя 2,64(в2к).Это как?


 
heady   (2004-02-12 19:33) [4]

попробуй такой вариант:
function RoundStr(Zn: Real; kol_zn: Integer): Real;
var
snl, s, s0, s1, s2: string;
n, n1: Real;
nn, i: Integer;
begin
s := FloatToStr(Zn);
if (Pos(",", s) > 0) and (Zn > 0) and
(Length(Copy(s, Pos(",", s) + 1, length(s))) > kol_zn) then
begin
s0 := Copy(s, 1, Pos(",", s) + kol_zn - 1);
s1 := Copy(s, 1, Pos(",", s) + kol_zn + 2);
s2 := Copy(s1, Pos(",", s1) + kol_zn, Length(s1));
n := StrToInt(s2) / 100;
nn := Round(n);
if nn >= 10 then
begin
snl := "0,";
for i := 1 to kol_zn - 1 do
snl := snl + "0";
snl := snl + "1";
n1 := StrToFloat(Copy(s, 1, Pos(",", s) + kol_zn)) + StrToFloat(snl);
s := FloatToStr(n1);
if Pos(",", s) > 0 then
s1 := Copy(s, 1, Pos(",", s) + kol_zn);
end
else
s1 := s0 + IntToStr(nn);
if s1[Length(s1)] = "," then
s1 := s1 + "0";
Result := StrToFloat(s1);
end
else
Result := Zn;
end;

(c) delphiWorld


 
Anatoly Podgoretsky   (2004-02-12 19:41) [5]

denis24 (12.02.04 19:20) [3]
Это значит, что у тебя не ровно 2,635, а 2,6349999999 или 2,6350000001


 
Defunct   (2004-02-12 19:55) [6]

а зачем округлять число?

может достаточно округлять результат выводимый на экран?
Format("%F3.2",[2.635]);


 
Anatoly Podgoretsky   (2004-02-12 20:00) [7]

На w2k получит 2,63 на w9x 2,64, какая разница, у него стопроцентно число чуть меньше 2,635


 
Stilgar   (2004-02-12 20:00) [8]

Какие алгоритмы... :) RoundTo - округлит до четного числа, SimpleRoundTo - до большего, что и требовалось:
2.64=SimpleRoundTo(2.635, -2);
P.S. Модуль Math.


 
Defunct   (2004-02-12 20:07) [9]

Anatoly Podgoretsky © (12.02.04 20:00) [7]

Const Delta = 0.0001;

Format("%F3.2",[2.635+ Delta]);


 
denis24   (2004-02-13 09:29) [10]

2,635- это число получаемое потем умножения 0,5*5,37=2,635.
По идее это 2,64.
Так вот попробовал heady (12.02.04 19:09) [2]
Но там например temp =0.5
Идет проверка условия
if temp>=0.5 ...........
Но при пошаговом просмотре это условие не выполняется и соответственно проскакивает .Почему?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.126 c
1-79873
Марат
2004-02-10 12:42
2004.02.25
Текстовый файл из DOS


4-80346
BKGG
2003-12-17 20:06
2004.02.25
Как с помощю API создать обработчик нажатия Button-а.


9-79520
AQUALITY
2003-08-16 18:59
2004.02.25
Вопрос о коллизии


1-79941
Layner
2004-02-09 12:57
2004.02.25
Подскажите плз, как на форме fsMDIForm отображать дочерние


1-79805
16xmax
2004-02-12 17:18
2004.02.25
компоненты





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