Avatar billede coladrenge Nybegynder
19. juni 2008 - 11:52 Der er 4 kommentarer

mssql 2000 vs. mssql 2005 - afrunding af float

Hej

Er der nogen som ved om der er ændringer i 2005 i forhold til 2000 - det underlige er at jeg kører 2 fuldstændig ens databaser på henholdsvis 2000 og 2005. Hvis

Jeg laver en sum som nedenstående får jeg en diference på 13. decimal - er der nogen som kan give en forklaring på dette.
Det sjove er at hvis jeg scanner tabellen igennem så siger et program som jeg har lavet at alle rækker er ens.


SELECT    SUM(tidfra_default) AS Expr1
FROM        dbo.defaultAfskrivninger

2005 : 8955,7499999999291
2000 : 8955,7499999999283
Avatar billede erikjacobsen Ekspert
19. juni 2008 - 11:59 #1
Sådan er det med kommatal på 'putere - det kan aldrig blive helt præcist. Forskellen kan ligge i rækkefølgen tallene bliver lagt sammen i, hvilket kan afvige mellem de 2 versioner.
Avatar billede arne_v Ekspert
19. juni 2008 - 18:27 #2
Jeg gaetter paa at forskellen ligger i koden der formaterer output.

SQLServer FLOAT er en 64 bit IEEE FP. En saadan har ca. 15 betydende cifre.

De 15 betydende cifre *er* ens:

2005 : 8955,74999999992
2000 : 8955,74999999992

Jeg gaetter ioevrigt paa at det korrekte resultat er 8955,75 og den fejl skyldes
floating point egenskaber.

Den kolonne skulle sikkert have vaeret DECIMAL(18,2) eller saadan noget fremfor FLOAT.
Avatar billede arne_v Ekspert
27. juli 2008 - 22:06 #3
coladrenge ?
Avatar billede arne_v Ekspert
30. august 2008 - 02:16 #4
?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester