Round e regole matematiche !?!?

lunedì 14 giugno 2004 - 10.21

d@dora Profilo | Senior Member

Ciao ragazzi, ho notato un problema con l'oggetto round : rispetta le regole matematiche ????
Ho visto che facendo una cosa del genere round(3850/100) da come risultato 38.0, ma se nn ricordo male , dovrebbe arrotondare per eccesso visto che il risultato da 38.5 e non per difetto !!!!!
Sapete perche ????

Ciao

alx_81 Profilo | Guru

Documentazione microsoft..

Returns the whole number nearest the specified value.
[Visual Basic]
Overloads Public Shared Function Round( _
ByVal d As Decimal _
) As Decimal
[C#]
public static decimal Round(
decimal d
);
[C++]
public: static Decimal Round(
Decimal d
);
[JScript]
public static function Round(
d : Decimal
) : Decimal;
Parameters
d
A Decimal number to be rounded.
Return Value
The whole number nearest parameter d. If d is halfway between two whole numbers, one of which by definition is even and the other odd, then the even number is returned.
Remarks
The behavior of this method follows IEEE Standard 754, section 4. This kind of rounding is sometimes called rounding to nearest, or banker's rounding.
Example
The following code example demonstrates rounding to nearest.
[Visual Basic]
Math.Round(4.4) 'Returns 4.0.
Math.Round(4.5) 'Returns 4.0.
Math.Round(4.6) 'Returns 5.0.
[C#]
Math.Round(4.4); //Returns 4.0.
Math.Round(4.5); //Returns 4.0.
Math.Round(4.6); //Returns 5.0.


ok?
ciao!

d@dora Profilo | Senior Member

Questo l'avevo capito anchio, ma non rispetta la regola matematica che vuole da 0 a 4 un arrotondamento per difetto e da 5 a 9 per eccesso !!!!
A questo punto DEVO, in ogni calcolo, controllarmi i risultati : NON mi sembra una buona soluzione .

Ciao e grazie

alx_81 Profilo | Guru

sinceramente..
sono proprio d'accordo con te..
e nemmeno saprei dirti il motivo per cui hanno scelto così..
ciao!

alx_81 Profilo | Guru

sinceramente..
sono proprio d'accordo con te..
e nemmeno saprei dirti il motivo per cui hanno scelto così..
ciao!

d@dora Profilo | Senior Member

Grazie lo stesso :-(((

d@dora Profilo | Senior Member

Quindi come unica soluzione, mi vedo costretto ad una cosa simile : Round(2850 / 100 + 0.9): vera schifezza !!!

Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5