[C#]функции округления
Math.Floor
Math.Ceiling
Math.Truncate
ага
А среди них "математическая" какая? Та что [x] обозначается... Math.Floor, что ли?
просто привести к инту мона
просто привести к инту мона
А вот и нет, [-1.5] == -2, а (int-1.5) == -1, вот так то...
честно без понятия в какую сторону округлять отриц числа
Math.Round - это математическое округление. Оно-то и нужно!
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);
они 0.5 округляют до нуля, а меня учили до 1
они там на стандарт ссылаются, а мне разве что на школьный учебник сослаться
1,5 округляется до 2, а 2,5 тоже до 2.
ЧТо за правило такое ?
1) если самая левая из отбрасяваемых цифр 0, 1, 2, 3 или 4, то предыдущая цифра не меняется.
2) если это 5 (и после неё ещё что-то есть 6, 7, 8 или 9 - то увеличивается на 1.
3) а если это просто 5 и ничего больше, то действует правило чётной цифры - если перед ней стоит чётная цифра, то она не меняется, если же нечётная, то увеличивается на 1.
Это я прочитал в Математическом Энциклопедическом Словаре. Да и в инете найти можно.
отсюда :
Понятно, что в C# это правило не действует
Взято
В этом месте полезно напомнить правила округления десятичных дробей до определенного разряда. Округление состоит в отбрасывании, точнее в замене нулями, всех цифр, стоящих правее цифры данного разряда. Если при этом первой из отбрасываемых цифр является 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# это правило не действует
Бухгалтерское округление отличается от математического тем, что числа, которые находятся ровно посередине (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.
Правило чётной цифры - это как раз и есть математическое!
Нет. Никак не математическое.
Откуда такие сведения? Ещё раз погляди, откуда я это взял. Если уж ты МЭС не веришь, то тогда я пас.
Учили меня так.
Простое округление, когда .5 округляется в большую сторону.
> это как раз и есть математическое!
О терминах спорить не буду, особенно в рамках данного треда, т.к. слова "бухгалтерское" и "математическое" мной использовались, в первую очередь, в описательном смысле, а не как конкретные термины.
Да мало ли чему в школе учили. У нас на уроках и не такую ерунду говорили.
В универе. На мехмате. Когда говорили про округление. Я думаю на мехмате нам рассказывали про математическое округление?
В рамках какого курса учили округлять?
Ладно, не будем спорить. Я думаю, в МатЭнциклопедии писали тоже не лохи.
Мимоходом. Походя так. В паре слов. А что? У вас уже для этого целый курс отводится?
А у нас уже курсы закончились давно
Оставить комментарий
olegusmaximus
подскажите плз