LINUX.ORG.RU

давайте лучше забудем о ТС, а вместо посремся на тему того, как округлять

0.4(9)

до 1 или до нуля?

dikiy ★★☆☆☆
()
Последнее исправление: dikiy (всего исправлений: 1)

Так разные есть варианты округлений. Но, дай угадаю, ты только что узнал про округление к четному разряду.

mix_mix ★★★★★
()

Отвечаю как математик: как захочется

buddhist ★★★★★
()
Ответ на: комментарий от Psych218

Вот, кстати. Нас в школе учили, что если после 5 (например 1.45001) идет что-то, отличное от 0, то округление в бóльшую сторону 1.5, если после 5 нет ничего (1.45), то в меньшую 1.4.

Сейчас учат, что 5 -> всегда потолок. По крайней мере у моего племянника в школе так.

ossa ★★
()
Последнее исправление: ossa (всего исправлений: 1)
Ответ на: комментарий от Rastafarra

Потому что, если бы это были разные числа, то существовало бы ещё бесконечность чисел >0.4(9) но < 0.5. Попробуй назови хоть одно...

Stahl ★★☆
()
Ответ на: комментарий от Stahl

Я ПриМат и программист, поэтому Ваш ответ оскорбляет мои чувства в двойне как и весь этот тред. Пойду прикладывать лед к задней части...

fornlr ★★★★★
()

целых 0.5

Я был несколько удивлен когда узнал, что вопрос не простой.

Вопрос тривиальный, как договоришься, так и округляй. Собственно, как и всё в математике.

Camel ★★★★★
()
Ответ на: комментарий от Rastafarra

0.4(9)1

Когда закончишь пересчитывать бесконечное количество девяток, Кай — тогда и приходи %)

Nervous ★★★★★
()
Ответ на: комментарий от Rastafarra

Попробуй назови хоть одно...

0.4(9)1 ! ))

два чая этому господину :D

dikiy ★★☆☆☆
()
Ответ на: комментарий от Deleted

Марш согласных

0.5 округляют к ближайшему чётному по соглашению.

По соглашению кого с кем? Когда я был моложе в школе преподавали 0,5 округлять в большую сторону. Правда никто не спрашивал «именно в большую сторону или в сторону большего абсолютного значения?», то есть куда округлять -0,5, до -1 или до 0.

Camel ★★★★★
()

как до целого округляется 0.5 или 0.4?

Спроси у кассира в супермаркете. Там какой-то сложный алгоритм.

pacify ★★★★★
()

по советской привычке 0.5 вверх, 0.4 вниз..наверное из соображений |[0..0.5)| :: |[0.5..1)| - т.е. диапозон [0..1) бъётся попалам и что в какую половину попало

MKuznetsov ★★★★★
()
Ответ на: комментарий от dikiy

Но никто этого пока не сделал и предпосылок к этому тоже нет.
Так что ты можешь быть первым и вписать своё имя в учебники математики:)

Stahl ★★☆
()
Ответ на: комментарий от MKuznetsov

попалам и что в какую половину попало

А слово «попалам» произошло от слова «попало» или «попа»? Что-то я всё в толк не возьму...
А «диапозон», вероятно, от «поза». Хм. Диа-поза. Завершёная, ультимативная поза. Ясненько...

Stahl ★★☆
()
Ответ на: комментарий от dikiy

Ничего не значит. Просто понятие периода есть и оно полезно. А это такой вот частный бесполезный случай. Фосген тоже очень полезен при производстве краски, но в бане он бесполезен.

Stahl ★★☆
()
Ответ на: комментарий от Stahl

Ничего не значит. Просто понятие периода есть и оно полезно. А это такой вот частный бесполезный случай.

А что такое это самое понятие периода?

dikiy ★★☆☆☆
()
Ответ на: Марш согласных от Camel
>>> from math import *
>>> round(0.5)
0
>>> round(1.5)
2
>>>

Я знаю, что округление к чётному предпочтительно по сложным математическим причинам. Это объясняют на первой лекции по Численным методам.

Deleted
()
Ответ на: комментарий от Stahl

Эта запись бессмысленна.

в нашем контексте она очевидна ))

Rastafarra ★★★★
()
Ответ на: комментарий от dikiy

Гм. Я не в настроении рассказывать банальные вещи. Чем проще понятие, тем внимательней нужно его рассказывать. Особенно когда слушатель - тролль и ждёт лишь возможности придраться.

Stahl ★★☆
()
$ cat rounding.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char **argv){
        double x;
        if (argc < 2) {
                printf("usage: rounding num\n");
                return 1;
        }
        x = atof(argv[1]);
        printf("floor(%lf) = %d\n", x, (int) floor(x));
        printf("ceil(%lf) = %d\n", x, (int) ceil(x));
        return 0;
}
$ ./rounding 0.4
floor(0.400000) = 0
ceil(0.400000) = 1
$ ./rounding 0.5
floor(0.500000) = 0
ceil(0.500000) = 1
saahriktu ★★★★★
()
Ответ на: комментарий от Deleted

Двоичные методы

Я знаю, что округление к чётному предпочтительно по сложным математическим причинам. Это объясняют на первой лекции по Численным методам.

Эти сложные математические причины имеют смысл только в применении к численным методам на ЭВМ с двоичной логикой?

Camel ★★★★★
()
Ответ на: комментарий от Stahl

Давай даже 2

Потому что, если бы это были разные числа, то существовало бы ещё бесконечность чисел >0.4(9) но < 0.5. Попробуй назови хоть одно...

0.4(9) + ε

0.5 - ε

Stil ★★★★★
()

∀N ∀f (N - целое число ∧ f > 0 ∧ f < 0.5) → число N+f округленное превращается в N

∀N ∀f (N - целое число ∧ f >= 0.5 ∧ f < 1) → число N+f округленное превращается в N+1

hlebushek ★★
()
Ответ на: комментарий от Deleted

Я знаю, что округление к чётному предпочтительно по сложным математическим причинам. Это объясняют на первой лекции по Численным методам.

Это для двоичной системы счисления.

И да, в твоем случае вообще работает стандарт IEEE-754 который к чистой арифметике имеет косвенное отношение. https://en.wikipedia.org/wiki/Rounding#Rounding_to_integer

Kosyak ★★★★
()

ТС горюет, что оказывается есть БАНКОВСКОЕ округление, где 0.4 округляется до 1. И в википедии про это есть. Только в transact sql такой функции встроенной нет.

Вот такие пироги.

dmxrand
() автор топика

если дробная часть != 0.5, то к ближайшему целому, иначе - к ближайшему четному. Это Емнип называется «правилом Гаусса».

kombrig ★★★
()
Ответ на: комментарий от deep-purple

Не получится ceil(0.3) вернет 1 а надо 0 надо 0.4 = 1

dmxrand
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.