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

Вниз

Как округлить дробное число с 3-х занков до 2-х после запятой?   Найти похожие ветки 

 
Anatoly Podgoretsky   (2003-11-17 12:40) [40]

sniknik © (17.11.03 12:21) [38]
На сайте Интела

sniknik © (17.11.03 12:37) [39]
Тут происходит много преобразований, и на каждом возможна ошибка представления.


 
Developerr   (2003-11-17 12:57) [41]

Я уже совсем запарился. Снова глюк.
ShowMessage(FloatToStr((Round(1.625*100))/100));
Округляет до 1.62, а надо 1.63. Хотя, если взять 1.615 или 1.635 округляет как положено. Кошмар :-(((((


 
Anatoly Podgoretsky   (2003-11-17 13:06) [42]

Округлило правильно, до четного.


 
Developerr   (2003-11-17 13:08) [43]

Тупые Америкозы, в паскале все работает тип топ.
просто пишем
a:=1.625;
writeln(a:2:2);

И все рабоает. Неужели нельзя было сделать и Delphi тоже самое???
Может есть все-таки что-то подобное?


 
Anatoly Podgoretsky   (2003-11-17 13:13) [44]

Да и 1,615 округлило до 1,61 тоже правильно, поскольку 1,615 невожможно представить, а правильное представление такое 1,61499999999999999

Ты зря не пислушался к моему замечанию Anatoly Podgoretsky © (16.11.03 20:23) [4]

При работе с плавающей запятой надо учитывать, что в отличии от фиксированой запятой, точность не абсолютная, а относительная.


 
Developerr   (2003-11-17 13:13) [45]


> Anatoly Podgoretsky

Нафига мне до четного? Мне нужно правильно, а не до четного. Сказать преподавателю матеметики, что если округлить число 1.625 до 2-х знаков после запятой получится 1.62. Он и поставит оценку ту которая стоит в конце числа - 2.


 
Anatoly Podgoretsky   (2003-11-17 13:14) [46]

А конечно, враги виноваты :-)


 
Anatoly Podgoretsky   (2003-11-17 13:16) [47]

Developerr © (17.11.03 13:13) [45]
Так почему ты тогда пользуешься функцией, которая округляет до четного? Не нравится сделай свою, по своим правилам.
А твое правильно, не более правильно, чем другие методы округления, не будь ежиком.


 
sniknik   (2003-11-17 13:24) [48]

Developerr © (17.11.03 13:13) [45]
> Нафига мне до четного?
как математическое включается я уже показывал. попробуй с ним и со свои RoundTo.


 
IgAn   (2003-11-17 13:40) [49]

2Developper
Trunc(2958,375 * 100 + 0.5)/100
делает именно то, что тебе нужно.


 
Developerr   (2003-11-17 13:44) [50]

Короче, пробовал все. Ничего не работает. Буду думать что-то еще.

> Anatoly Podgoretsky ©


> Да и 1,615 округлило до 1,61 тоже правильно, поскольку 1,615
> невожможно представить, а правильное представление такое
> 1,61499999999999999

Фигня это все. Паскаль и фокс под ДОС считают по человечески, а такая срань как Делфи пургу несет. Не зря задорнов про Америкоз говорит: НУ ТУПЫЕ.


 
Anatoly Podgoretsky   (2003-11-17 13:46) [51]

У тебя что ни будь еще есть, кроме тупые?


 
Danilka   (2003-11-17 13:48) [52]

[50] Developerr © (17.11.03 13:44)
точно! советую срочно переходить на паскаль и фокс под дос. и при запуске программы обязательная заставка со словами задорнова.


 
Developerr   (2003-11-17 13:55) [53]


> IgAn ©

Спасибо. Помогло. Пока глюков не выявил.

> Anatoly Podgoretsky ©

Конечно есть. Ну, об этом не будем.


> Danilka ©

Просто 5 баллов. Мне очень понравилось. Спасибо. А ты не Андрей Данилка, который Верку Сердючку играет?


 
Anatoly Podgoretsky   (2003-11-17 14:03) [54]

Ну, ну, не поленись проверить.

D := 1.615;
D1 := Trunc(D * 100 + 0.5)/100;
ShowMessage(FloatToStr(D1));
ShowMessage(FloatToStr(Trunc(1.615 * 100 + 0.5)/100));

У тебя огромная дыра в понимании чисел с плавающей запятой


 
IgAn   (2003-11-17 14:17) [55]


> Anatoly Podgoretsky © (17.11.03 14:03) [54]
> Ну, ну, не поленись проверить.


Я не поленился, ты тоже не поленись...


D := 1.615;
d1:=D*100;
d1:=d1+0.5;
d1:=d1/100;
ShowMessage(FloatToStr(D1));
ShowMessage(FloatToStr(Trunc(1.615 * 100 + 0.5)/100));


 
sniknik   (2003-11-17 14:19) [56]

Anatoly Podgoretsky © (17.11.03 14:03) [54]
как ни странно работает,

вот так не работает
var d, d1: Real48; //указать явно тип
begin
D := 1.615;
D1 := Trunc(D * 100 + 0.5)/100;
ShowMessage(FloatToStr(D1));
ShowMessage(FloatToStr(Trunc(1.615 * 100 + 0.5)/100));
...

видать тут то ему разрядности и не хватает, а тип реал зависит от директив компилятора и может быть как Real48 так и Double-ом.

> Developerr ©
кстати с Double-ом тоже есть такие числа.. :) можно нарватся.


 
Anatoly Podgoretsky   (2003-11-17 14:22) [57]

sniknik © (17.11.03 14:19) [56]
1.61 и 1.62, поскольку тип был не указан, то использовался тип Double, но это не принципиально, поскольку меняется точность


 
Developerr   (2003-11-17 15:21) [58]


> Anatoly Podgoretsky ©
> Ну, ну, не поленись проверить.
>
> D := 1.615;
> D1 := Trunc(D * 100 + 0.5)/100;
> ShowMessage(FloatToStr(D1));
> ShowMessage(FloatToStr(Trunc(1.615 * 100 + 0.5)/100));
> У тебя огромная дыра в понимании чисел с плавающей запятой

Не поленился! И вчем прикол? Показывает 2 одинаковых сообщения с текстом 1.62.
В чем проблема???


 
BlackTiger   (2003-11-17 15:32) [59]

Попробую вспомнить свою функцию... кажется было так:

function ValidRoundTo(D : double; UpTo : double) : double;
var
n, r : double;
begin
n := Trunc(D / UpTo); //извлекаем целую часть
r := Trunc((D - n) * 10); //получаем остаток
if r >= 5 then n := n + 1; // если остаток 5 то накручиваем еще единицу
Result := r * UpTo; //приводим число "обратно"
end;


используется так:

r := ValidRoundUp(345.3145, 0.01); //до 2х знаков {r = 345.31}
r := ValidRoundUp(345.3145, 0.001); //до 3х знаков {r = 345.315}
r := ValidRoundUp(345.3145, 100); //до сотен {r = 300}



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

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

Наверх




Память: 0.55 MB
Время: 0.011 c
3-89699
Vemer
2003-11-10 14:49
2003.11.27
Как правильно задать параметр запроса с датой.


1-89840
Лена
2003-11-16 20:24
2003.11.27
Перевод целого р- ичного числа (2<= p<= q) в десятичную систему с


1-89959
killer
2003-11-17 17:16
2003.11.27
Как вытащить из текущего окна IE, его заголовок?


14-90129
Saturn
2003-11-03 13:29
2003.11.27
Microsoft Visual Studio .NET


8-90009
GILforever
2003-08-02 02:26
2003.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский