[C#]функции округления

olegusmaximus

подскажите плз

Helga87

Math.Round
Math.Floor
Math.Ceiling
Math.Truncate

olegusmaximus

ага

rosali

А среди них "математическая" какая? Та что [x] обозначается... Math.Floor, что ли?

olegusmaximus

так вроде целая часть обозначается
просто привести к инту мона

rosali

просто привести к инту мона

А вот и нет, [-1.5] == -2, а (int-1.5) == -1, вот так то...

olegusmaximus

честно без понятия в какую сторону округлять отриц числа

aleks058

Math.Round - это математическое округление. Оно-то и нужно!

rosali

Math.Round - это математическое округление. Оно-то и нужно!

Ну блин, пришлось самому посмотреть! У нас с тобой наверное математики разные?.. "Целая часть", она же [ . ], это как выяснилось Floor.
Returns the largest whole number less than or equal to the specified number.
public static double Floor(double d);

Returns the whole number nearest the specified value.
public static decimal Round(decimal);

6yrop

походу дела меня и разработчиков .Net Framework разным математикам учили
они 0.5 округляют до нуля, а меня учили до 1
они там на стандарт ссылаются, а мне разве что на школьный учебник сослаться

Flack_bfsp

0,5 округляется до нуля это совершенно точно. Правило чётной цифры. Слыхал о таком?
1,5 округляется до 2, а 2,5 тоже до 2.

JaneSick

ЧТо за правило такое ?

Flack_bfsp

Когда отбрасывается какой-то кусок дробной части, или же вся она, то:
1) если самая левая из отбрасяваемых цифр 0, 1, 2, 3 или 4, то предыдущая цифра не меняется.
2) если это 5 (и после неё ещё что-то есть 6, 7, 8 или 9 - то увеличивается на 1.
3) а если это просто 5 и ничего больше, то действует правило чётной цифры - если перед ней стоит чётная цифра, то она не меняется, если же нечётная, то увеличивается на 1.
Это я прочитал в Математическом Энциклопедическом Словаре. Да и в инете найти можно.

fisher

Взято отсюда :

В этом месте полезно напомнить правила округления десятичных дробей до определенного разряда. Округление состоит в отбрасывании, точнее в замене нулями, всех цифр, стоящих правее цифры данного разряда. Если при этом первой из отбрасываемых цифр является 0, 1, 2, 3 или 4 , последняя остающаяся цифра не меняется; если же первой из отбрасываемых цифр окажется 5, 6, 7, 8 или 9 , последняя остающаяся цифра увеличивается на 1, а если этой цифрой была 9, то увеличение на 1 произойдет в предшествующем ей разряде, а сама она заменится на 0. Старинное "правило четной цифры": когда отбрасывается только цифра 5, последняя остающаяся цифра не меняется, если она четная, и увеличивается на 1, если она нечетная. Пользуясь этими правилами, округлите до второго знака после запятой, т.е. до сотых долей числа 1,4142; 2,71828; 3,14159; 0,445; 0,435 . Аналогично округляются до десятков, сотен, тысяч и т.д. целые числа

Понятно, что в C# это правило не действует

Dasar

в .Net используется так называемое бухгалтерское (или как здесь уже назвали "округление к четному числу" а не математическое округление.
Бухгалтерское округление отличается от математического тем, что числа, которые находятся ровно посередине (xxx.5 округляются в меньшую или в большую сторону в зависимости от четности ближайщих чисел.
Это сделано для того, чтобы при вычислениях (например, суммировании) ошибка округления была более равномерной, а не сдвинутой в большую, или меньшую сторону.
пример:
если суммировать следующий ряд с математическим округлением:
0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, то результат получится 55
если с бухгалтерским, то будет 50
что намного ближе к результату без округления - 50.

Flack_bfsp

Простите, а что вы понимаете под математическим округлением?
Правило чётной цифры - это как раз и есть математическое!

mirt1971

Нет. Никак не математическое.

Flack_bfsp

Откуда такие сведения? Ещё раз погляди, откуда я это взял. Если уж ты МЭС не веришь, то тогда я пас.

mirt1971

Учили меня так.

Dasar

> что вы понимаете под математическим округлением?
Простое округление, когда .5 округляется в большую сторону.
> это как раз и есть математическое!
О терминах спорить не буду, особенно в рамках данного треда, т.к. слова "бухгалтерское" и "математическое" мной использовались, в первую очередь, в описательном смысле, а не как конкретные термины.

Flack_bfsp

Да мало ли чему в школе учили. У нас на уроках и не такую ерунду говорили.

mirt1971

В универе. На мехмате. Когда говорили про округление. Я думаю на мехмате нам рассказывали про математическое округление?

Marinavo_0507

В рамках какого курса учили округлять?

Flack_bfsp

Ладно, не будем спорить. Я думаю, в МатЭнциклопедии писали тоже не лохи.

mirt1971

Мимоходом. Походя так. В паре слов. А что? У вас уже для этого целый курс отводится?

Marinavo_0507

Просто интересно, кому, кроме бухгалтеров, это нужно.
А у нас уже курсы закончились давно
Оставить комментарий
Имя или ник:
Комментарий: