Главная страница
    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.033 c
9-79529
Jenaxx
2003-08-09 12:19
2004.02.25
Я скачал из Samples исходник Quest это типа рпг какой то а она...


3-79656
Fom
2004-01-30 13:20
2004.02.25
План выполнения ХП


1-79719
alextov
2004-02-12 16:25
2004.02.25
Не получается сделать форму шире экрана


14-80280
Guest
2004-02-03 21:01
2004.02.25
Удаленная работа для Delphi программиста


1-79766
Excel
2004-02-11 10:18
2004.02.25
Как программно скрыть столбцы в Excel ?





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