|
| Decimaler (MySQL)... Fra : Thomas Jensen |
Dato : 07-08-03 17:59 |
|
Hej,
Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
decimaler efter
ex:
1549,63
Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
(altså 00 i de sidste 2 dec)
Hvad gør jeg?
Thomas
| |
Hasse R. Hansen (07-08-2003)
| Kommentar Fra : Hasse R. Hansen |
Dato : 07-08-03 18:12 |
|
On Thu, 7 Aug 2003 18:58:32 +0200, "Thomas Jensen" <tgsj@mail.dk>
wrote:
>Hej,
>
>Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
>decimaler efter
>ex:
>1549,63
>
>Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
>(altså 00 i de sidste 2 dec)
>
>Hvad gør jeg?
>
kunne det ikke skyldes at du bruger , istedet for .
mvh.
Hasse R. Hansen
| |
Thomas Jensen (07-08-2003)
| Kommentar Fra : Thomas Jensen |
Dato : 07-08-03 20:49 |
|
Hvis jeg bruger . (punktum) får jeg en fejl i database, når jeg forsøger at
ændre det
"Hasse R. Hansen" <hasse@REMOVEramlev.dk> skrev i en meddelelse
news:t125jvkijbifrvvvhr1sf7nic6bekfl86h@4ax.com...
> On Thu, 7 Aug 2003 18:58:32 +0200, "Thomas Jensen" <tgsj@mail.dk>
> wrote:
>
> >Hej,
> >
> >Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
> >decimaler efter
> >ex:
> >1549,63
> >
> >Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
> >(altså 00 i de sidste 2 dec)
> >
> >Hvad gør jeg?
> >
> kunne det ikke skyldes at du bruger , istedet for .
> mvh.
> Hasse R. Hansen
| |
Jimmy (07-08-2003)
| Kommentar Fra : Jimmy |
Dato : 07-08-03 19:15 |
|
"Thomas Jensen" <tgsj@mail.dk> wrote in message
news:3f328530$0$76133$edfadb0f@dread11.news.tele.dk...
> Hej,
>
> Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
> decimaler efter
> ex:
> 1549,63
>
> Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
> (altså 00 i de sidste 2 dec)
>
> Hvad gør jeg?
Jeg vil *klart* anbefale at anvende en INT.
Når du henter din data ud kan du gøre det via:
SELECT (foo/100) AS foo FROM bar
Mvh
Jimmy
| |
Thomas Jensen (07-08-2003)
| Kommentar Fra : Thomas Jensen |
Dato : 07-08-03 20:55 |
|
hvordan får jeg tilføjet det i nedenstående, så den stadig tager resten af
rækkerne med?
$query="SELECT * FROM photo order by photoID asc";
"Jimmy" <nyhedsgruppe@get2net.dk> skrev i en meddelelse
news:1GwYa.1926$n51.120@news.get2net.dk...
>
> "Thomas Jensen" <tgsj@mail.dk> wrote in message
> news:3f328530$0$76133$edfadb0f@dread11.news.tele.dk...
> > Hej,
> >
> > Jeg har brug for en kolonne der indeholder optil 4 dec oforan komma og 2
> > decimaler efter
> > ex:
> > 1549,63
> >
> > Jeg troede jeg skulle bruge decimal (5,2), men den giver altid 1549,00
> > (altså 00 i de sidste 2 dec)
> >
> > Hvad gør jeg?
>
> Jeg vil *klart* anbefale at anvende en INT.
>
> Når du henter din data ud kan du gøre det via:
>
> SELECT (foo/100) AS foo FROM bar
>
> Mvh
> Jimmy
>
>
| |
Jimmy (07-08-2003)
| Kommentar Fra : Jimmy |
Dato : 07-08-03 22:06 |
|
"Thomas Jensen" <tgsj@mail.dk> wrote in message
news:3f32aead$0$76155$edfadb0f@dread11.news.tele.dk...
> hvordan får jeg tilføjet det i nedenstående, så den stadig tager resten af
> rækkerne med?
Kan jeg ikke få dig til at skrive under det du besvarer og klippe overflødig
tekst væk?
> $query="SELECT * FROM photo order by photoID asc";
Det kan du gøre på følgende måde:
$query = "SELECT (foo/100) AS foo, * FROM photo order by photoID asc";
Du skal erstatte foo med navnet på den kolonne, der indeholder dine værdier.
Du skal samtidig huske at du nu ikke opererer med kommatal, men med tal, der
er 100 gange så store som dem du hiver ud.
Dette er normalt kun noget du skal huske ved INSERT og UPDATE.
Mvh
Jimmy
| |
Thomas Jensen (10-08-2003)
| Kommentar Fra : Thomas Jensen |
Dato : 10-08-03 18:55 |
|
"Jimmy" <nyhedsgruppe@get2net.dk> skrev i en meddelelse
news:AazYa.1950$432.959@news.get2net.dk...
> Det kan du gøre på følgende måde:
>
> $query = "SELECT (foo/100) AS foo, * FROM photo order by photoID asc";
>
>
> Du skal erstatte foo med navnet på den kolonne, der indeholder dine
værdier.
>
> Du skal samtidig huske at du nu ikke opererer med kommatal, men med tal,
der
> er 100 gange så store som dem du hiver ud.
> Dette er normalt kun noget du skal huske ved INSERT og UPDATE.
Skulle det ikke være noget lign:
$query = "INSERT INTO photo SET photoID=NULL,
photoFileName='$photoFileName', title='$title', description='$description',
pris AS '($pris*100)'";
men det giver flg fejlmedd:
Mysql error: You have an error in your SQL syntax near 'AS '(111*100)'' at
line 1
Thomas
| |
Martin Sveegaard (10-08-2003)
| Kommentar Fra : Martin Sveegaard |
Dato : 10-08-03 21:37 |
|
On Sun, 10 Aug 2003 19:54:39 +0200, "Thomas Jensen" <tgsj@mail.dk>
wrote:
>Skulle det ikke være noget lign:
>$query = "INSERT INTO photo SET photoID=NULL,
>photoFileName='$photoFileName', title='$title', description='$description',
>pris AS '($pris*100)'";
$query = "INSERT INTO photo SET photoID=NULL,
photoFileName='$photoFileName', title='$title',
description='$description',
pris=$pris*100";
MVH Martin S
| |
Thomas Jensen (10-08-2003)
| Kommentar Fra : Thomas Jensen |
Dato : 10-08-03 22:48 |
|
"Martin Sveegaard" <sveegaard@tdcadslFJERNDETTE.dk> skrev i en meddelelse
news:r5bdjv8de49cotfcgkatrk5egsgju6amq5@4ax.com...
> On Sun, 10 Aug 2003 19:54:39 +0200, "Thomas Jensen" <tgsj@mail.dk>
> $query = "INSERT INTO photo SET photoID=NULL,
> photoFileName='$photoFileName', title='$title',
> description='$description',
> pris=$pris*100";
> MVH Martin S
| |
Thomas Jensen (10-08-2003)
| Kommentar Fra : Thomas Jensen |
Dato : 10-08-03 22:49 |
|
"Martin Sveegaard" <sveegaard@tdcadslFJERNDETTE.dk> skrev i en meddelelse
news:r5bdjv8de49cotfcgkatrk5egsgju6amq5@4ax.com...
> On Sun, 10 Aug 2003 19:54:39 +0200, "Thomas Jensen" <tgsj@mail.dk>
> $query = "INSERT INTO photo SET photoID=NULL,
> photoFileName='$photoFileName', title='$title',
> description='$description',
> pris=$pris*100";
> MVH Martin S
TAKKER!!!
| |
Thomas Jensen (10-08-2003)
| Kommentar Fra : Thomas Jensen |
Dato : 10-08-03 23:05 |
|
"Martin Sveegaard" <sveegaard@tdcadslFJERNDETTE.dk> skrev i en meddelelse
news:r5bdjv8de49cotfcgkatrk5egsgju6amq5@4ax.com...
> On Sun, 10 Aug 2003 19:54:39 +0200, "Thomas Jensen" <tgsj@mail.dk>
> wrote:
> $query = "INSERT INTO photo SET photoID=NULL,
> photoFileName='$photoFileName', title='$title',
> description='$description',
> pris=$pris*100";
> MVH Martin S
Hmmm, fik fejl når jeg brugte, (komma) men lavede en str_replace og nu kører
det
$db_pris=str_replace(",",".",$pris);
Erstetter komma med punktum inden det sendes til database
Thomas
| |
Peter Sepstrup (10-08-2003)
| Kommentar Fra : Peter Sepstrup |
Dato : 10-08-03 23:08 |
|
Thomas Jensen skrev:
> $db_pris=str_replace(",",".",$pris);
Lige ved første øjekast så ser den lidt sjov ud den str_replace :D
--
Mvh. Peter.
___________________________________
www.SepstrupNET.dk & www.PHP-FAQ.dk
| |
Thomas Jensen (12-08-2003)
| Kommentar Fra : Thomas Jensen |
Dato : 12-08-03 07:47 |
|
"Peter Sepstrup" <peter@_REMOVE_sepstrupnet.dk> skrev i en meddelelse
news:3f36c235$0$83068$edfadb0f@dtext01.news.tele.dk...
snip
> Lige ved første øjekast så ser den lidt sjov ud den str_replace :D
He he
Så må den jo være noget at det bedste programmering man kan lave:
Det er sjovt og det virker :)
Thomas
| |
Arne Feldborg (07-08-2003)
| Kommentar Fra : Arne Feldborg |
Dato : 07-08-03 23:26 |
|
"Jimmy" <nyhedsgruppe@get2net.dk> skrev Thu, 7 Aug 2003 20:14:49 +0200
>Jeg vil *klart* anbefale at anvende en INT.
>
>Når du henter din data ud kan du gøre det via:
>
>SELECT (foo/100) AS foo FROM bar
>
Skal det forståes derhen, at du generelt vil fraråde at gemme decimaltal
i en *sql-database.?
--
mvh, A:\Feldborg
Folketælllinger Hammerum og Bøling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/
| |
Jimmy (07-08-2003)
| Kommentar Fra : Jimmy |
Dato : 07-08-03 23:30 |
|
"Arne Feldborg" <feldborg@haunstrup.dk> wrote in message
news:6vi5jv0fee5kcnalhit6p6ng71bf8kp371@news2.tele.dk...
> "Jimmy" <nyhedsgruppe@get2net.dk> skrev Thu, 7 Aug 2003 20:14:49 +0200
>
>
> >Jeg vil *klart* anbefale at anvende en INT.
> >
> >Når du henter din data ud kan du gøre det via:
> >
> >SELECT (foo/100) AS foo FROM bar
> >
> Skal det forståes derhen, at du generelt vil fraråde at gemme decimaltal
> i en *sql-database.?
Der er fordele og ulemper ved begge tilgangsvinkler.
Mvh
Jimmy
| |
Arne Feldborg (08-08-2003)
| Kommentar Fra : Arne Feldborg |
Dato : 08-08-03 00:27 |
|
"Jimmy" <nyhedsgruppe@get2net.dk> skrev Fri, 8 Aug 2003 00:29:59 +0200
>> Skal det forståes derhen, at du generelt vil fraråde at gemme decimaltal
>> i en *sql-database.?
>
>Der er fordele og ulemper ved begge tilgangsvinkler.
>
Ja, undskyld. Jeg er vist ikke helt med.
Jeg kan udmærket forstå selve fremgangsmåden i at lægge et decimaltal
ind i databasen som et heltal (feks. hvis det er kroner og ører ganger
man med 100 når man lægger tallet ind og dividerer med 100 når man
trækker det ud, og tilsvarende hvis det er kilometer og meter ganger man
med 1000).
Men hvad er selve ideen i at gøre sådanne.?
Kan man ikke bare lægge et tal (feks. 20.49) ind i databasen, og så
hente samme tal ud igen.?
Eller går der koks i decimaltegnet afhængig af forskellige opsætninger.?
--
mvh, A:\Feldborg
Folketælllinger Hammerum og Bøling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/
| |
Morten Guldager (08-08-2003)
| Kommentar Fra : Morten Guldager |
Dato : 08-08-03 20:37 |
|
Thu, 07 Aug 2003 at 23:26 GMT Arne Feldborg wrote
>
> Kan man ikke bare lægge et tal (feks. 20.49) ind i databasen, og så
> hente samme tal ud igen.?
Tjo, du skal se på hvordan din database, i dette tilfælde MySQL lagrer
tallet.
Den ligefremme datatype er nok en floatingpointtype hvis man koder
noget med penge for første gang.
Men problemet med floatingpoint er at man ikke sådan rigtig har styr på
præcisionen.
Det er ikke altid at en værdi er den samme efter man har lagt 10 til og
trukket dem fra igen.
Ved at bruge en integer og selv gange med de 100, hvis vi taler kroner/ører,
har man 100% styr på værdien.
I gamle dage var integeroerationer også langt hurtigere end floatingpoint ditto.
Jeg ved ikke rigtig om det også et tilfældet på en moderne CPU.
Men det primære argument er afrundingsbøvlet.
/Morten
| |
|
|