Approssimazione a 5 decimali

venerdì 25 luglio 2008 - 10.31

netgit Profilo | Newbie

Cercherò di spiegarmi con un esempio

Module Module1
Sub Main()
Dim num As Double = 1.25
Console.WriteLine(Math.Round(num, 1, MidpointRounding.AwayFromZero))
num = 1.225
Console.WriteLine(Math.Round(num, 2, MidpointRounding.AwayFromZero))
num = 1.2225
Console.WriteLine(Math.Round(num, 3, MidpointRounding.AwayFromZero))
num = 1.22225
Console.WriteLine(Math.Round(num, 4, MidpointRounding.AwayFromZero))
num = 1.222225
Console.WriteLine(Math.Round(num, 5, MidpointRounding.AwayFromZero))
num = 1.2222225
Console.WriteLine(Math.Round(num, 6, MidpointRounding.AwayFromZero))
End Sub
End Module


L'output è :
1,3
1,23
1,223
1,2223
1,22222
1,222223

La penultima riga, cioè quella con l'approssimazione a 5 decimali è errata.
E' un errore del framework o sbaglio qulcosa io ?

Andrea

alx_81 Profilo | Guru

Ciao

>La penultima riga, cioè quella con l'approssimazione a 5 decimali è errata.
>E' un errore del framework o sbaglio qulcosa io ?
Da MSDN: "Double-precision numbers store an approximation of a real number"
Quindi è un normale comportamento:

Double Data Type
http://msdn.microsoft.com/en-us/library/x99xtshc.aspx

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5