26. november 2007 - 22:13
Der er
31 kommentarer og 1 løsning
Float eller decimal
Jeg er pludselig blevet i tvivl om, hvad jeg skal bruge, når jeg egentlig bare skal have skrevet decimaltal ind i en mysql-database. f.eks. 1234.56 Hvad er forskellen lige helt præcis på float og decimal - eller skal jeg bruge noget helt tredje?
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
26. november 2007 - 22:21
#1
FLOAT for scientific data DECIMAL for finansielle data
26. november 2007 - 22:24
#2
FLOAT daekker et meget stort range, men har til gengaeld en vis usikkerhed indbygget. Du har 44.5 km til arbejde. Men du mener i virkeligeheden bare et sted mellem 44.45 og 44.55 - det giver ingen mening at sige at du har 44.5.000736 km til arbejde. FLOAT er perfekt. Er saldoen paa kontoen 23741.25, saa er saldoen praecis det. Den er ikke 23741.2500001. Bogholdere og revisorer er lidt naertagne med hensyn til den slags.
26. november 2007 - 22:25
#3
Der er i øvrigt ikke altid 2 decimaler. Det er forskelligt - fra 0 til 3.
26. november 2007 - 22:27
#4
det er ikke finansielle data - det er vægtangivelser :)
26. november 2007 - 22:31
#5
Vaegt vil man nok typisk bruge FLOAT til. Der er nemlig en vis usikkerhed paa din vaegt.
26. november 2007 - 22:31
#6
det er bare som om det er et "loft" jeg kan f.eks. taste 123456 ind i en float-dataværdi (eller hvad det hedder), men ikke 123456.1 ?? det har ikke været et problem indtil nu, for jeg har slet ikke haft brug for høje data ... men det får jeg nu her
26. november 2007 - 22:32
#7
Hvis den vise 1234.56 saa er der i virkeligheden 1234.559999 - 1234.560001 den mener.
26. november 2007 - 22:33
#8
men hvad mener du med usikkerhed? hvis man skriver 45.45 er det så ik det tal, eller kan det pludselig være noget andet? - nok dumt spørgsmål, men jeg synes at den opfører sig lidt sjovt når jeg tester og det er ikke altid i kilo eller gram - det er også i mikrogram, så den skal være ret nøjagtig ;)
26. november 2007 - 22:34
#9
Hvis du bruger DOUBLE fremfor FLOAT saa faar du hoejere praecision.
26. november 2007 - 22:34
#10
øh? okay, hvorfor pokker gør den det? hvad nu, hvis jeg skal have den præcis?
26. november 2007 - 22:35
#11
En FLOAT har ca. 7 cifres praecision mens DOUBLE har ca. 15. cifre - ikke decimaler !!
26. november 2007 - 22:35
#12
du er lige en anelse foran i skriveriet her :D højere præcision ... men ikke helt præcis? hvad er usikkerheden eller unøjagtigheden så ved double?
26. november 2007 - 22:36
#13
Hvis du vil bruge DECIMAL og vil have 3 decimaler og 15 cifre ialt kan du bruge DECIMAL(15,3).
26. november 2007 - 22:37
#14
igen ;) ok, hvorfor regner den ikke bare med de nøjagtige tal? hvad er ulempen så ved double frem for float?
26. november 2007 - 22:38
#15
Taenk paa decimal som et normal tal nnnnnnn.mmm hvor du angiver laengde. Taenk paa float og double som scientific notation 0.nnnnnnEmm (der er ydeligere den komplikation at float/double ikke bruger 1/10 1/100 etc. men 1/2 1/4 1/8 etc., men lad os ignorere det).
26. november 2007 - 22:39
#16
en DOUBLE fylder dobbelt saa meget som en FLOAT (gaet selv hvor navnet kommer fra)
26. november 2007 - 22:43
#17
en DOUBLE kan med 8 bytes daekke saa smaa tal som 2.2E-308 og saa store tal som 1.8E308 det ville kraeve en DECIMAL(616, 308) at goere det samme og den ville fylde rigtigt meget FLOAT og DOUBLE giver meget stor range uden at fylde ret meget til gengaeld er der lidt usikkerhed paa dem men det goer normalt ikke noget ved maalinger det er ikke ret tit at man kan maale en vaegt med 15 cifres noejagtighed (for en bil paa 1000 kg vil det svare til en milliardedel gram)
26. november 2007 - 22:43
#18
hm - 7 cifres præcision burde nu også være nok
26. november 2007 - 22:47
#19
men jeg skal ik skrive float(7,3) ??
26. november 2007 - 22:47
#20
jeg skal bare skrive float?
26. november 2007 - 22:48
#21
bare FLOAT eller nok bedre bare DOUBLE
26. november 2007 - 22:50
#22
men du skriver at DOUBLE fylder dobbelt så meget? så er det vel bedst med FLOAT?
26. november 2007 - 22:52
#23
forskellen paa en million tal er 4 MB harddiske er billige idag jeg ville bruge DOUBLE
26. november 2007 - 22:57
#24
okay :) så bare lige for at skære det helt ud - bare DOUBLE ... ik noget med DOUBLE(15,3) ??
26. november 2007 - 22:58
#25
og kan jeg bare sådan lige ændre fra float til double uden at der sker noget med de allerede eksisterende tal?
26. november 2007 - 23:04
#26
næ, det har jeg lige testet - værdierne ændrer sig (på decimalerne, der kommer pludselig rigtig mange) skal jeg så lægge dataene over med php, eller hvordan gør man det?
26. november 2007 - 23:05
#27
ja bare DOUBLE
26. november 2007 - 23:06
#28
maaske er eksport det bedste
26. november 2007 - 23:06
#29
maaske er eksport og import det bedste
26. november 2007 - 23:10
#30
ah ja, tusind tak for hjælpen :) smider du ik et svar :)
21. januar 2008 - 04:47
#31
Kommer her
21. januar 2008 - 08:36
#32
Tak ;)
Computerworld tilbyder specialiserede kurser i database-management