25. oktober 2005 - 15:59
Der er
8 kommentarer og 1 løsning
omkring float
Jeg har en tabel: create table punkt( punkt_id int identity, testopgave_id int, x float, y float primary key(punkt_id) ) jeg laver en insert: INSERT INTO punkt ( testopgave_id ,x ,y ) VALUES ( 3727 ,11.1 ,12.2 ) Jeg kigger i databasen og der står punkt_id testopgave_id x y 55 3727 11.1 12.199999999999999 Hvad skal jeg gøre for at det er 12.2 der kommer til at stå i tabellen ?
Annonceindlæg fra Arrow
25. oktober 2005 - 16:02
#1
droppe FLOAT og bruge DECIMAL(14,2)
25. oktober 2005 - 16:02
#2
eller leve med det som det er :-)
25. oktober 2005 - 16:04
#3
hvad er decimal(14,2) ? og har du en forklaring af hvad den nærmere betydning af datatyperne float og decimal ?
25. oktober 2005 - 16:08
#4
decimal(14,2) er et tal med op til 14 cifre og altid 2 cifre efter decimal punktum/komma float er gemt som (1 + b1 * 1/2 + b2 * 1/4 + b3 * 1/8 + ...) * 2 ^ a (hvor b1,b2,b3,... er enten 0 eller 1)
25. oktober 2005 - 16:13
#5
float kan gemme både meget store og meget små tal uden at fylde ret meget til gengæld er den absolutte præcision meget varierende decimal(14,2) er jo per definition +/- 0.005 men en float på 10^300 vil have en usikkerhed +/- 10^285 og en float på 10^-300 vil have en usikkerhed på 10^-315
26. oktober 2005 - 08:51
#6
Tak for forklaringen (og læg et svar)
26. oktober 2005 - 10:36
#7
svar
30. oktober 2005 - 19:40
#8
Pointen i ovenstående må vist være at afhængig af om man bruger decimal eller binær repræsentation er der forskel på hvilke tal der kan repræsenteres eksakt. 0.1 kan repræsenteres eksakt i decimal repræsentation men ikke i binær repræsentation
30. oktober 2005 - 19:42
#9
det er en af dem
Computerworld tilbyder specialiserede kurser i database-management