Avatar billede mik789 Nybegynder
15. oktober 2003 - 14:07 Der er 29 kommentarer og
1 løsning

hente sidste ciffer af en double

Jeg har en database hvor et af felterne angiver ID'er som doubles, f.eks. 1.1, 1.2, 1.3 [...] 2.1, 2.2, 2.3 osv.

Nu har jeg brug for at hente bare det sidste ciffer, altså hhv 1, 2, 3 [...] 1, 2, 3. Det må kunne lade sig gøre... men hvordan?

//mik
Avatar billede angak Nybegynder
15. oktober 2003 - 14:10 #1
Gange med 10 og modulo 10
Avatar billede hhunden Nybegynder
15. oktober 2003 - 14:12 #2
du kunne bruge funktionen explode()

$ciffer = $row[id];
$ciffer = explode (".", $ciffer);
$ciffer = $ciffer[1];
ceho $ciffer;
Avatar billede hhunden Nybegynder
15. oktober 2003 - 14:13 #3
hov.. den med explode skulle have været et svar :)
og ceho skulle have været echo....
Avatar billede exp Juniormester
15. oktober 2003 - 14:17 #4
hvis der ALTID kun er et ciffer efter punktum kan du bruge:

substr($str, -1)

men støtter hhunden's forslag...
Avatar billede mik789 Nybegynder
15. oktober 2003 - 14:39 #5
hhunden> jeg skal ha' lidt hjælp: hvor kommer $row[id] fra?

Jeg har testet med flg. som muligvis bare viser at jeg ikke har forstået en snus:

<!DOCTYE...
<html>osv.

<body>

<?php
function showLast($double) {
$ciffer = $row[id];
$ciffer = explode(".",$ciffer);
$ciffer = $ciffer[1];
echo $ciffer;
}

$double = 1.2;
echo "double = $double;<br />\n";
echo showLast($double);
?>

</body>

Denne side skriver bare: "double = 1.2", men viser ikke hvad det sidste ciffer er :-/
Avatar billede mik789 Nybegynder
15. oktober 2003 - 14:40 #6
hov jeg kan da i hvert fald se én syntaks fejl: funktionen skal bare hedde showLast() hvis jeg gør det på denne måde...
Avatar billede mik789 Nybegynder
15. oktober 2003 - 14:43 #7
men det ændrede ikke noget....
Avatar billede mik789 Nybegynder
15. oktober 2003 - 14:49 #8
OK, var din $row der drillede. hvis jeg i stedet skriver:
Avatar billede mik789 Nybegynder
15. oktober 2003 - 14:50 #9
<?php
// function showLast() {
$double = 1.2;
echo "double = $double<br />\n";
$ciffer = $double;
$ciffer = explode(".",$ciffer);
$ciffer = $ciffer[1];
echo $ciffer;
?>

----

så virker det
Avatar billede angak Nybegynder
15. oktober 2003 - 14:55 #10
Nu er jeg ikke helt sikker.... Men kan "$resultat = $double % 1" ikke bare bruges?

Eller blander jeg det sammen med et andet sprog?
Avatar billede mik789 Nybegynder
15. oktober 2003 - 14:57 #11
angak> prøver.....
Avatar billede mik789 Nybegynder
15. oktober 2003 - 15:03 #12
angak>

$double = 1.2;
$resultat = $double % 1;
echo $resultat;

skriver bare: "0"
Avatar billede angak Nybegynder
15. oktober 2003 - 15:05 #13
Så prøv:

$double = 1.2;
$resultat = (($double*10) % 10)/10;

echo $resultat;

Det kan være Modulo kun kan heltal
Avatar billede hhunden Nybegynder
15. oktober 2003 - 15:07 #14
$row[id] kommer fra dit database udtræk

hvordan indgår det i dit site??
Avatar billede mik789 Nybegynder
15. oktober 2003 - 15:08 #15
angak> det giver "0.2"
Avatar billede martinbk Nybegynder
15. oktober 2003 - 15:10 #16
<?php
function showLast($double) {
echo "double = $double<br />\n";
$double = explode(".",$double);
$ciffer = $double[1];
return $ciffer
?>

så kalder du bare din funktion f.eks.
echo showLast(1.2);

dette vil skrive
double = 1.2
2
Avatar billede angak Nybegynder
15. oktober 2003 - 15:10 #17
Doh.... Glem det med at dele med 10 til sidst... Jeg havde lige glemt spørgsmålet.... *g*
Avatar billede angak Nybegynder
15. oktober 2003 - 15:11 #18
Efter mange forsøg ender mit svar med at være :

$double = 1.2;
$resultat = (($double*10) % 10);
echo $resultat;
Avatar billede martinbk Nybegynder
15. oktober 2003 - 15:12 #19
angak hvorfor er du så låst på at bruge Modulo ?
Avatar billede martinbk Nybegynder
15. oktober 2003 - 15:13 #20
forresten min løsning kunne være lidt pænere

$ciffer = (int) $double[1];

for at fjerne alle misforståelser
Avatar billede mik789 Nybegynder
15. oktober 2003 - 15:14 #21
holybull>
dette er stort det samme som jeg nåede frem til 15/10-2003 14:50:16 ("//" er bare en paste-fejl)
Avatar billede martinbk Nybegynder
15. oktober 2003 - 15:16 #22
mik789 forskellen er at mit virker.. det er testet
Avatar billede martinbk Nybegynder
15. oktober 2003 - 15:16 #23
og funktionerne return og echo er absolut ikke det samme
Avatar billede mik789 Nybegynder
15. oktober 2003 - 15:17 #24
holybull> det er min også ;-)
eneste forskel er at din har en variabel som parameter, og det skal den selvfølgelig have for at kunne kaldes uafhængigt, men det er jeg klar over.
Avatar billede mik789 Nybegynder
15. oktober 2003 - 15:18 #25
holybull> næ, men gør det nogen forskel - den skal jo echo'es under alle omstændigheder?
Avatar billede martinbk Nybegynder
15. oktober 2003 - 15:19 #26
der ligger også andre forskelle, f.eks. anvender jeg return, som giver funktionen en retunerings værdi, og jeg laver en implicit typekonvertering for 110% at undgå misforståelser
Avatar billede hhunden Nybegynder
15. oktober 2003 - 15:19 #27
så problemet er løst nu, eller...
Jeg er blevet lidt forvirret nu :o)
Men hvis mik789 har fået løst sit problem er det jo lige meget om jeg har forstået... :o)
Avatar billede mik789 Nybegynder
15. oktober 2003 - 15:20 #28
jeg HAR fået løst problemet. jeg brugte hhundens model som blev rettet lidt til...
men tak til alle
Avatar billede hhunden Nybegynder
15. oktober 2003 - 15:21 #29
godt så :o) så var det bare mig der var blevet forvirret undervejs !!!
Avatar billede angak Nybegynder
15. oktober 2003 - 15:24 #30
holybull: "angak hvorfor er du så låst på at bruge Modulo?"

Fordi det er en nem og simpel operator.. =)
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