как округлить число в c#?
От: novikovs Россия  
Дата: 28.03.05 06:27
Оценка:
как округлить число в c#?
Re: как округлить число в c#?
От: Chardex Россия  
Дата: 28.03.05 06:29
Оценка:
Здравствуйте, novikovs, Вы писали:

N>как округлить число в c#?

Math.Round();
Re[2]: как округлить число в c#?
От: Igor Trofimov  
Дата: 28.03.05 09:50
Оценка:
C>
C>Math.Round();
C>


Только учтите, в fw1.1 он округляет "серединку" то вверх, то вниз, например если округялешь до1 знака после запятой, то 1.45 округлится до 1.4, а 1.55 — до 1.6.

В fw2.0 есть флажок.
как округлить число в c#?
От: Аноним  
Дата: 28.03.05 09:43
Оценка:
еще см. Math.Ceiling и Math.Floor



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: как округлить число в c#?
От: DuШes  
Дата: 28.03.05 10:08
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

C>>
C>>Math.Round();
C>>


iT>Только учтите, в fw1.1 он округляет "серединку" то вверх, то вниз, например если округялешь до1 знака после запятой, то 1.45 округлится до 1.4, а 1.55 — до 1.6.


iT>В fw2.0 есть флажок.


данное поведение полностью соотвествует стандарту IEEE 754, согласно которому числа "number being rounded is halfway between two numbers" (значения находятся посередине соседних значений) округляются в сторону ближайшего четного..
Re[4]: как округлить число в c#?
От: GarryIV  
Дата: 28.03.05 10:20
Оценка:
Hello, DuШes!

iT>> Только учтите, в fw1.1 он округляет "серединку" то вверх, то вниз,

iT>> например если округялешь до1 знака после запятой, то 1.45 округлится
iT>> до 1.4, а 1.55 — до 1.6.

iT>> В fw2.0 есть флажок.


D> данное поведение полностью соотвествует стандарту IEEE 754, согласно

D> которому числа "number being rounded is halfway between two numbers"
D> (значения находятся посередине соседних значений) округляются в сторону
D> ближайшего четного..

Это конечно не может не радовать Только зачем нам этот стандарт ума не приложу. Приходится свою реализацию Round писать...
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re[5]: как округлить число в c#?
От: Mika Soukhov Stock#
Дата: 28.03.05 10:38
Оценка: 5 (1) +1
Здравствуйте, GarryIV, Вы писали:

GIV>Hello, DuШes!


iT>>> Только учтите, в fw1.1 он округляет "серединку" то вверх, то вниз,

iT>>> например если округялешь до1 знака после запятой, то 1.45 округлится
iT>>> до 1.4, а 1.55 — до 1.6.

iT>>> В fw2.0 есть флажок.


D>> данное поведение полностью соотвествует стандарту IEEE 754, согласно

D>> которому числа "number being rounded is halfway between two numbers"
D>> (значения находятся посередине соседних значений) округляются в сторону
D>> ближайшего четного..

GIV>Это конечно не может не радовать Только зачем нам этот стандарт ума не приложу. Приходится свою реализацию Round писать...


Все правильно реализовано. Например, возьмем 1.45. Если округлять в большую сторону, то мы получим сначала, 1.5, а потом 2, что совершенно неприемлимо. Если же округлять в меньшую, то мы получим сначала 1.4, а потом 1.
Re[5]: как округлить число в c#?
От: DuШes  
Дата: 28.03.05 10:39
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Hello, DuШes!


iT>>> Только учтите, в fw1.1 он округляет "серединку" то вверх, то вниз,

iT>>> например если округялешь до1 знака после запятой, то 1.45 округлится
iT>>> до 1.4, а 1.55 — до 1.6.

iT>>> В fw2.0 есть флажок.


D>> данное поведение полностью соотвествует стандарту IEEE 754, согласно

D>> которому числа "number being rounded is halfway between two numbers"
D>> (значения находятся посередине соседних значений) округляются в сторону
D>> ближайшего четного..

GIV>Это конечно не может не радовать Только зачем нам этот стандарт ума не приложу. Приходится свою реализацию Round писать...


стандарт в принципе нужен для того чтобы разрулить ситуацит, когда число непонятно к чему округлять, например 2.5 после округления — это 3 или 2?

можно округлить вот так: (авторство Publisher : O'Reilly / C# Cookbook)

public static double RoundUp(double valueToRound)
{
    return (Math.Floor(valueToRound + 0.5));
}

public static double RoundDown(double valueToRound)
{
    double floorValue = Math.Floor(valueToRound);
    if ((valueToRound - floorValue) > .5)
    {
        return (floorValue + 1);
    }
    else
    {
        return (floorValue);
    }
}
Re[6]: как округлить число в c#?
От: DuШes  
Дата: 28.03.05 10:40
Оценка:
Здравствуйте, Mika Soukhov, Вы писали:

MS>Здравствуйте, GarryIV, Вы писали:


GIV>>Hello, DuШes!


iT>>>> Только учтите, в fw1.1 он округляет "серединку" то вверх, то вниз,

iT>>>> например если округялешь до1 знака после запятой, то 1.45 округлится
iT>>>> до 1.4, а 1.55 — до 1.6.

iT>>>> В fw2.0 есть флажок.


D>>> данное поведение полностью соотвествует стандарту IEEE 754, согласно

D>>> которому числа "number being rounded is halfway between two numbers"
D>>> (значения находятся посередине соседних значений) округляются в сторону
D>>> ближайшего четного..

GIV>>Это конечно не может не радовать Только зачем нам этот стандарт ума не приложу. Приходится свою реализацию Round писать...


MS>Все правильно реализовано. Например, возьмем 1.45. Если округлять в большую сторону, то мы получим сначала, 1.5, а потом 2, что совершенно неприемлимо. Если же округлять в меньшую, то мы получим сначала 1.4, а потом 1.


очень наглядный пример...
Re[4]: как округлить число в c#?
От: Igor Trofimov  
Дата: 28.03.05 10:41
Оценка:
DШ>данное поведение полностью соотвествует стандарту IEEE 754, согласно которому числа "number being rounded is halfway between two numbers" (значения находятся посередине соседних значений) округляются в сторону ближайшего четного..

А никто не говорит, что это "вообще неправильно". Просто надо это иметь в виду, потому что это не то, чего многие ожидают и не то, что часто бывает нужно.

А нужно бывает округление серединки во вполне определенную сторону (в зависимости от того, покупаем или продаем )
Re[5]: как округлить число в c#?
От: Peter Fleischer Германия www.informtoools.de
Дата: 28.03.05 12:14
Оценка: 5 (1)
"GarryIV" <20023@users.rsdn.ru> schrieb im Newsbeitrag news:1094553@news.rsdn.ru...
...
> D> данное поведение полностью соотвествует стандарту IEEE 754, согласно
> D> которому числа "number being rounded is halfway between two numbers"
> D> (значения находятся посередине соседних значений) округляются в сторону
> D> ближайшего четного..
>
> Это конечно не может не радовать Только зачем нам этот стандарт ума не приложу. ...

То, что огруляют до ближайшего четного числа, дает статистически уравновешанные результаты. Комерческое огругление всегда "вверх" дает статистическое отклонение от среднего. Оставшиеся копейко кто-то сеье в карман кладет

Пример:

1,5 2 2
2,5 3 2
3,5 4 4
4,5 5 4
5,5 6 6
6,5 7 6
7,5 8 8
8,5 9 8
среднее
5 5,5 5

Peter
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.