Avatar billede mik789 Nybegynder
19. oktober 2003 - 09:47 Der er 29 kommentarer og
2 løsninger

floating point data typer

Nu vil jeg godt have det helt på det rene: hvad er forskellen mellem disse kategorier:

float
double
double precision
real
decimal
nemeric

Jeg kan forstå at det har at gøre med decimaltal, og har set at float almindeligvis oversættes til "flydende komma" på dansk. Men hvad er det? "Double" oversættes nogle steder til "dobbeltpunkt", men igen, hvad er det?

Kan nogen forklare mig forskellen mellem disse typer ved hjælp af eksempler?

//mik
Avatar billede mik789 Nybegynder
19. oktober 2003 - 09:48 #1
nemeric==numeric
Avatar billede jakobclausen Nybegynder
19. oktober 2003 - 09:49 #2
Du burde kunen finde alle typer her:
http://www.mysql.com/doc/en/Column_types.html
Avatar billede mik789 Nybegynder
19. oktober 2003 - 09:57 #3
jakobclausen> tak for linket, jeg har set på den side før. men den forudsætter at man ved hvad "float" og "double" er. Og hvad vil "precision" sige i denne sammemnhæng? Har det noget med op- og nedrundning at gøre? Jeg tror jeg har brug for at få typerne beskrevet med eksempler. Er det bare et spørgsmål om antal decimaler eller er det forskellige typer af decimal tal.

Det jeg konkret har brug for er tal som i en indholdsfortegnelse, dvs. på formen:

1.1
1.1.1
1.1.2
1.1.3
1.2.1
1.2.2
3.1

... og jeg skal så være sikker på at systemet kan finde ud af hvad der er højere end hvad i rækken.
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:11 #4
Ingen af dem kan bruges til det formål !
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:12 #5
De er nemlig alle tal.

Brug en tekst-type.

Sortering bør virke OK.
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:15 #6
Men ellers:

float,read,doubler er ægte floating point d.v.s. at der er et variabelt
antal decimaler, hvilket giver mulighed for både meget store og meget små tal,
men til gengæld giver lidt regne unøjagtighed.

decimal, numreic er fixed point d.v..s at der er et fast antal decimaler,
hvilket betyder præcis udregning.

precision = plads brugt til data typen (mere plads = større range
eller flere decimaler).
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:15 #7
arne_v> OK, så du siger at selv om at jeg vælger f.eks. char som datatype som kan mysql godt finde ud af at 3.1 er mere end 1.2.2...

fint. Men jeg ville nu godt alligevel vide hvad disse typer står for.
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:17 #8
Ja.

Tekst sorteres alfabetisk.

Og alfabetisk sortering må være OK for dig.
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:17 #9
Se min 10:15:05 kommentar.
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:18 #10
arne_v> tak. det var en forklaring der var til at forstå. det er et spørgsmål om variabelt eller bestemt antal decimaler.
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:19 #11
arne_v> vil det sige at det ligger i en alfabetisk sortering at "2" er mere end "1" som "c" er mere end "b"?
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:22 #12
arne_v> læg lige et svar... ;-)
Avatar billede erikjacobsen Ekspert
19. oktober 2003 - 10:26 #13
"3.1.1" er større end "1.4.6", men
"10.3.3" er mindre end "2.3.4". Er det så ok med dig?

Du kan opbevare dem som

"000010.000003.000003" osv, og fjerne 0'erne ved udskrift. Så virker det
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:29 #14
2 er større end 1 alafabetisk
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:30 #15
Erik har en pointe.

Hvis du har brug for > 1 cifrede tal er der et potentielt problem.
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:30 #16
svar
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:33 #17
erikjacobsen> ok, så i en alfabetisk ellimineres kommaerne og der ses kun på hvert enekelt ciffer fra venstre mod højre?
Avatar billede erikjacobsen Ekspert
19. oktober 2003 - 10:35 #18
Der kigges også på kommaerne, men de står så bare altid samme sted.
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:36 #19
så alfabetisk er 10.3.3 = badd, hvor 2.3.4 = cde ?
Avatar billede erikjacobsen Ekspert
19. oktober 2003 - 10:41 #20
Det virker ikke uden foranstillede nuller.
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:42 #21
lad os så sige at jeg accepterer tallene på formen:

0-99.0-9.0-9 og bevarer evt. nuller. Vil 10.3.3 da forstås som større end 02.3.4 (eriks eks. fra 19/10-2003 10:26:05) ?
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:43 #22
0-99.0-9.0-9 skulle være: 00-99.0-9.0-9
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:51 #23
OK, tak for hjælpen begge to. Det var nyttigt.
Avatar billede erikjacobsen Ekspert
19. oktober 2003 - 10:51 #24
"10.3.3" er større end "02.3.4" - ja. Men sæt hellere rigeligt med
0'er på - så er det fremtidssikret, og de er nemme at fjerne i en udskrift
Avatar billede mik789 Nybegynder
19. oktober 2003 - 10:52 #25
jeg opretter et nyt sp. til næste led: hvordan man fjerner nullerne igen
Avatar billede arne_v Ekspert
19. oktober 2003 - 10:52 #26
1 er større end 0 og derfor er 10.3.3 større end 02.3.4
Avatar billede erikjacobsen Ekspert
19. oktober 2003 - 10:54 #27
I PHP:

  $a="0000010";

  print 0+$a;

så er nullerne væk ;)
Avatar billede erikjacobsen Ekspert
19. oktober 2003 - 11:12 #28
Eller en smule mere generelt

  $a="000010.000002.001000";
  $b=explode(".",$a);
  print (0+$b[0]).".".(0+$b[1]).".".(0+$b[2])
Avatar billede Slettet bruger
19. oktober 2003 - 16:59 #29
erikjacobsen> Der er en udfordring til dig i http://www.eksperten.dk/spm/415829 som en forlængelse af dette spm ;)
Avatar billede erikjacobsen Ekspert
19. oktober 2003 - 19:33 #30
Det syn's jeg da ikke lige jeg vil blande mig i. Jeg ser ingen grund til at gøre det i MySql
Avatar billede Slettet bruger
19. oktober 2003 - 19:44 #31
næh...men nu var dette jo lukket...
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