Avatar billede 17196 Nybegynder
04. april 2008 - 10:52 Der er 8 kommentarer og
1 løsning

sprintf mysql og money

45.95 virker ikke
45.75 virker

$a = 45.95; // 45.75
$sql = sprintf("SELECT pony FROM hest WHERE price = '%01.2f'",mysql_real_escape_string($a));

Datatypen er float -er det korrekt når vi snakker om spir?
Oh but WHY?
På forhånd tak.
Avatar billede jakobdo Ekspert
04. april 2008 - 19:01 #1
Hvad er det du gerne vil opnå ?
Avatar billede 17196 Nybegynder
04. april 2008 - 19:19 #2
Et match.
Jeg validerer om prisen passer med den i databasen, så der ikke opstår fusk. Altså returnerer jeg true hvis præcis 1 række findes. Men tror jeg er kommet frem til at jeg ikke kan bruge float som datatype, det forstår jeg bare ikke helt - især fordi jeg alternativt kun kan få match på begge ved varchar.
Avatar billede jakobdo Ekspert
04. april 2008 - 20:09 #3
Prøv at udskriv $sql inden du skyder den af.
Hvad indeholder den ?
Avatar billede arne_v Ekspert
04. april 2008 - 20:11 #4
Nej. FLOAT er et meget daarligt valg til penge. FLOAT er til fysiske maal med naturlig
usikkerhed saasom afstande. Brug DECIMAL eller NUMBER til penge.
Avatar billede arne_v Ekspert
04. april 2008 - 20:14 #5
Du kan evt. proeve om

... WHERE price BETWEEN 49.949 AND 49.951

kan fange noget.
Avatar billede fant0mas Nybegynder
04. april 2008 - 20:21 #6
echo sprintf('%01.2f',myblblbl($a));
giver det korrekte (45.95/45.75)
Avatar billede 17196 Nybegynder
05. april 2008 - 10:09 #7
Tak for hjælpen.
Jeg skal vist omstrukturere det lidt, og ikke lade brugeren poste andet end antal, og på den måde blive fri for validering.
Men jeg lærte i det mindste FLOAT er verboten til penge.
Smid et svar arne, og du skal modtage points.
Men er det forresten ikke underligt, at den som FLOAT godtager .75 men ikke .95..?
Avatar billede arne_v Ekspert
05. april 2008 - 17:45 #8
Jeg tror at FLOAT kan lave en eksakt repræsentation af 45.75 men ikke af  45.95.

45.75 er 2^5*(1+1/4+1/8+1/32+1/64+1/128)

og der er dne måde FLOAT opbevarer data på.
Avatar billede arne_v Ekspert
05. april 2008 - 17:45 #9
Og et svar.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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