[php] Gedeelte van een getal selecteren!

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Spooksel
  • Registratie: Oktober 2000
  • Laatst online: 17:27
Ik zit vast met de selectie van een gedeelte van een getal! Bijv:

3500000 of 250000

Hiervan wil ik dan selecteren:

350 & 25

Maw: 'knip' de 0000 (4 nullen) op het einde weg en selecteer de rest.

Met
PHP:
1
preg_match("/[^.]{2,3}0000/", $sub, $punten);

heb ik nu dat hij alsnog die laatste 4 nullen matched! Hoe moet ik dit nou zo maken dat hij alleen de 2 (of 3) getallen voor 0000 selecteerd?

Bevalt mijn schrijfsel je niet? www.korrelatie.nl


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

Delen door 10.000 is geen optie?

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Spooksel
  • Registratie: Oktober 2000
  • Laatst online: 17:27
Ow lol, net al een andere oplossing bedacht!

PHP:
1
$sub = str_replace("0000","",$sub);


En weg zijn de 4 nullen die ik niet meer wil hebben :D woei

Bevalt mijn schrijfsel je niet? www.korrelatie.nl


Acties:
  • 0 Henk 'm!

  • Spooksel
  • Registratie: Oktober 2000
  • Laatst online: 17:27
Delen door 10.000! lol, zo simpel ook he |:(

Ik zat zo te bedenken hoe ik nou die 0000 eens kon lozen dat ik er niet eens aan dacht om het gewoon te delen :S

Bevalt mijn schrijfsel je niet? www.korrelatie.nl


Acties:
  • 0 Henk 'm!

  • UltimateB
  • Registratie: April 2003
  • Niet online

UltimateB

Pomdiedom

Tja rekenen met strings voelt misschien wat moeilijk ;)

"True skill is when luck becomes a habit"
SWIS


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Delen vind ik in dit geval een beetje dubieus omdat je niet echt de nummerieke waarde wil delen maar je een representatie van een string aan wil passen. Ik zou dan eerder kiezen voor de functie substr waarmee je 4 tekens van de string kan halen. Dat is een stukje logischer.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

djluc schreef op vrijdag 21 maart 2008 @ 16:41:
Delen vind ik in dit geval een beetje dubieus omdat je niet echt de nummerieke waarde wil delen maar je een representatie van een string aan wil passen. Ik zou dan eerder kiezen voor de functie substr waarmee je 4 tekens van de string kan halen. Dat is een stukje logischer.
Waarom zou je soft typing niet toepassen daar waar het volledig verdedigbaar toepasbaar is?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • sjunnie
  • Registratie: September 2001
  • Laatst online: 15:33

sjunnie

U mag ook Sjun zeggen

djluc schreef op vrijdag 21 maart 2008 @ 16:41:
Delen vind ik in dit geval een beetje dubieus omdat je niet echt de nummerieke waarde wil delen maar je een representatie van een string aan wil passen. Ik zou dan eerder kiezen voor de functie substr waarmee je 4 tekens van de string kan halen. Dat is een stukje logischer.
Uit de OP kan ik niet 100% zeker zeggen dat hij de waarden als strings wil verwerken..
Ook kan ik er niet uit opmaken dat de invoer altijd gegarandeerd een 10-duizendtal is;
Dat laatste zou dan problemen opleveren als je gaat delen, dan hou je uiteindelijk misschien nog een waarde over met cijfers achter de komma. Met substr zal je dat niet gebeuren. :)

Wat ik wil zeggen is dat de context handig is om te weten voordat je de te gebruiken methode kiest.

If you can judge a wise man by the color of his skin then mister you're a better man than I


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Of je doet substr() met -4 als 3e parameter. Of afhankelijk vd context, een van de andere 1001 oplossingen met de meest basic PHP functies... :z

{signature}


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 20:15

Onbekend

...

sjunnie schreef op vrijdag 21 maart 2008 @ 17:26:
[...]
Ook kan ik er niet uit opmaken dat de invoer altijd gegarandeerd een 10-duizendtal is;
Dat laatste zou dan problemen opleveren als je gaat delen, dan hou je uiteindelijk misschien nog een waarde over met cijfers achter de komma.
Maar hiervoor heb je de round(), floor() of ceil() functies voor. :)

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • TaraWij
  • Registratie: December 2007
  • Laatst online: 08-02 18:37
Spooksel schreef op vrijdag 21 maart 2008 @ 16:31:
Met
PHP:
1
preg_match("/[^.]{2,3}0000/", $sub, $punten);

heb ik nu dat hij alsnog die laatste 4 nullen matched! Hoe moet ik dit nou zo maken dat hij alleen de 2 (of 3) getallen voor 0000 selecteerd?
Normaal gezien kan je haakjes gebruiken als je enkel bepaalde dingen alleen wil.

Dan krijg je geloof ik een array waar het eerst element alles is, en de resterende elementen de haakjes. (Mijn uitleg kan fout zijn)

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Spooksel schreef op vrijdag 21 maart 2008 @ 16:34:
Ow lol, net al een andere oplossing bedacht!

PHP:
1
$sub = str_replace("0000","",$sub);


En weg zijn de 4 nullen die ik niet meer wil hebben :D woei
En wat is je output dan bij 3500000000?

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
TaraWij schreef op vrijdag 21 maart 2008 @ 20:20:
[...]
Dan krijg je geloof ik een array waar het eerst element alles is, en de resterende elementen de haakjes. (Mijn uitleg kan fout zijn)
Die is niet fout, want je zit ongeveer letterlijk de preg_match manual voor te lezen, maw. dat moet TS ook zelf wel kunnen. Alleen is een regex hier zeker niet de juiste oplossing...

{signature}


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 20:15

Onbekend

...

curry684 schreef op zaterdag 22 maart 2008 @ 00:49:
[...]

En wat is je output dan bij 3500000000?
Signed integer overflow. :P

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Da's knap, bij een string. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 20:15

Onbekend

...

-NMe- schreef op zaterdag 22 maart 2008 @ 11:38:
[...]

Da's knap, bij een string. :P
Daarin heb je gelijk. :)
Ik zie dat er de ene keer over een getal gepraat wordt, en de andere keer over een string van cijfers...

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Spooksel
  • Registratie: Oktober 2000
  • Laatst online: 17:27
Hmm, het gaat hier eigenlijk wel degelijk om een string op het moment van de conversie.

bijv: 000000000000.00
12 getallen voor de punt, 2 erachter.

000000050000.0000 komt bijv overeen met 5 euro.

met explode op "." haal ik ze uit elkaar, met intval() loos ik de begin nullen en met str_replace de 4 laatste. centen doen we niet aan, dus het eindigt altijd met 4 nullen :)

Bevalt mijn schrijfsel je niet? www.korrelatie.nl


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Het is dan wel geen nuttige bijdragende reply...maarre... W...T...F... :?
000000050000.0000 = 5 euro? En wat is dan 5.20? En waarom wil je dan zo lomp die 4 nullen eraf slopen? En...en... waar de hell ben je mee bezig? Mag ik de naam van dat systeem zodat ik er in de toekomst vér vandaan kan blijven? :P

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Spooksel
  • Registratie: Oktober 2000
  • Laatst online: 17:27
lol, 5.20 = 000000052000.00

het is voor iets op het werk :P

Bevalt mijn schrijfsel je niet? www.korrelatie.nl


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

* MueR mompelt iets over brakke datamodellen enzo

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 12:37

Zoefff

❤ 

Spooksel schreef op zaterdag 22 maart 2008 @ 18:00:
lol, 5.20 = 000000052000.00

het is voor iets op het werk :P
Waarom mag op je werk €5,- geen "5,00" of wellicht "500" cent zijn? :P


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 20:15

Onbekend

...

Waarom zou je dan nog een kommagetal nodig hebben? Voor microcenten? :)

@TS:
Kan je misschien ons uitleggen waarom je zo'n groot getal krijgt met vier nullen op het einde?

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Spooksel
  • Registratie: Oktober 2000
  • Laatst online: 17:27
Ik heb geen idee eigenlijk, zo zit die koppeling nou eenmaal :P Vroeg me zelf ook al af waarom het zo'n idioot lange string is :S

Bevalt mijn schrijfsel je niet? www.korrelatie.nl


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Laat me voorop stellen dat je met een vreemd systeem moet werken en dat degene die het verzonnen heeft gevierendeeld moet worden. Dat laat echter niet onverlet dat je oplossing al vanaf het begin héél simpel is.
PHP:
1
$getal = (int) "000000050000.0000" / 10000;

Dit betekent wel dat je precisie verliest op centen; als je dat niet wil moet je delen door 100 in plaats van 10000 en met centen gaan rekenen, of nog preciezer als je applicatie dat verlangt.

[ Voor 26% gewijzigd door NMe op 23-03-2008 14:36 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

-NMe- schreef op zondag 23 maart 2008 @ 14:35:
Dit betekent wel dat je precisie verliest op centen; als je dat niet wil moet je delen door 100 in plaats van 10000 en met centen gaan rekenen, of nog preciezer als je applicatie dat verlangt.
Of gewoon converteren naar een float ipv een int schatje. Net wakker om 14:35? :P

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

curry684 schreef op zondag 23 maart 2008 @ 23:04:
[...]

Of gewoon converteren naar een float ipv een int schatje. Net wakker om 14:35? :P
Ik vertrouw PHP niet genoeg om iets anders dan ints te gebruiken voor het uitdrukken van geldbedragen. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1