[php] testen of een variabele een geheel getal is

Pagina: 1
Acties:
  • 1.231 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
Ik ben op zoek naar een functie in php om te checken of een bepaalde waarde een ROND GETAL is, dus zonder punten of komma's.

met is_numeric() worden getallen met punten wel toegelaten.

Deze vraag zal ongetwijfeld heel makkelijk te beantwoorden zijn, maar ik ben nu al een tijdje op zoek op php.net en op google en ik heb nog geen juiste functie gevonden.

alvast bedankt,

bartosiej

Acties:
  • 0 Henk 'm!

  • x-force
  • Registratie: Maart 2001
  • Laatst online: 05-01-2024
Als je het getal afrond met round() en daarna vergelijkt met het orginele getal. That would do the trick.

Niet heel netjes maar wel een gemakkelijke functie.

[ Voor 21% gewijzigd door x-force op 24-03-2006 14:23 . Reden: extra tekst ]

VangenopBetaalwater.nl Het platform om ervaringen over betaalwater in Frankrijk te delen met andere karpervissers zodat iedereen kan vangen op betaalwater!


Acties:
  • 0 Henk 'm!

  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 20-04 22:01
Je kunt misschien gewoon door de hele string heen lopen en dan kijken of er alleen cijfers inzitten? Of anders kijken of er een "," of "." in voorkomt.

Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
maar er is dus geen functie voor?

Acties:
  • 0 Henk 'm!

  • Reinder83
  • Registratie: September 2002
  • Laatst online: 18-09 14:44
PHP:
1
2
3
  if(is_numeric(str_replace(",", ".", $nummer)) {
    // check
  }

Acties:
  • 0 Henk 'm!

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 06:29
if ($getal==(string)(int)$getal)

Was advocaat maar vindt het juridische nog steeds leuk


Acties:
  • 0 Henk 'm!

Verwijderd

deze functie is daar voor bedoeld
PHP:
1
is_int()

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Reinder83 schreef op vrijdag 24 maart 2006 @ 14:25:
PHP:
1
2
3
  if(is_numeric(str_replace(",", ".", $nummer)) {
    // check
  }
Totdat je locale anders ingesteld staat. is_int() is de enige juist functie, die kijkt of het getal geheel is.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, is_int kijkt of het getal een integer type heeft. "123" is een string, geen int, dus is_int zal false geven.

PHP:
1
2
if (is_numeric($a) && $a == (int)$a)
    echo "a is een geheel getal";

[ Voor 28% gewijzigd door .oisyn op 24-03-2006 14:33 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
bedankt, hier was ik naar opzoek :)

Acties:
  • 0 Henk 'm!

  • Reinder83
  • Registratie: September 2002
  • Laatst online: 18-09 14:44
dan kan je nog alle punten en komma's eruit filteren
PHP:
1
2
3
4
5
<?
   if(is_numeric(str_replace(array(".", ","), array("", ""), $nummer)) {
      // check
   }
?>

[ Voor 23% gewijzigd door Reinder83 op 24-03-2006 14:32 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

* titelfix

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Nu online

DexterDee

I doubt, therefore I might be

Ik denk dat dit vrij simpel te realiseren is.
PHP:
1
2
3
if( is_numeric($num) && floor($num)==$num ) {
     echo "We hebben een geheel getal :-)";
}

Klik hier om mij een DM te sturen • 3245 WP op ZW


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zoals ik al zei dus 2 posts eerder ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Nu online
.oisyn schreef op vrijdag 24 maart 2006 @ 14:30:
PHP:
1
2
if (is_numeric($a) && $a == (int)$a)
    echo "a is een geheel getal";
Die is_numeric() is niet eens nodig, $a is immers alleen gelijk aan zijn integer representatie als het om een numerieke string gaat...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Toch wel, als je een string vergelijkt met een int wordt die string eerst omgezet naar een int. Onderstaande code echo't "PHP sucks!"

PHP:
1
2
if ("aap" == (int)"aap")
    echo "PHP sucks!";

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 10:41

aex351

I am the one

.oisyn schreef op vrijdag 24 maart 2006 @ 15:52:
Toch wel, als je een string vergelijkt met een int wordt die string eerst omgezet naar een int. Onderstaande code echo't "PHP sucks!"

PHP:
1
2
if ("aap" == (int)"aap")
    echo "PHP sucks!";
Je moet wel de juiste operators gebruiken, dit is de correcte methode :
PHP:
1
2
3
4
5
<?php
if ("aap" === (int)"aap") { 
    echo "PHP sucks!"; 
} else { echo "PHP rulez"; }
?>



PHP:
1
2
3
if ( is_int((int)'123') )  echo 'ja 1';  //ja
if ( is_int('123') )  echo 'ja 2';  //nee
if ( is_int(123) )  echo 'ja 3 ';  //ja

[ Voor 108% gewijzigd door aex351 op 24-03-2006 16:11 ]

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

aex351 schreef op vrijdag 24 maart 2006 @ 16:04:

Je moet wel de juiste operators gebruiken, dit is de correcte methode :
PHP:
1
2
3
4
5
<?php
if ("aap" === (int)"aap") { 
    echo "PHP sucks!"; 
} else { echo "PHP rulez"; }
?>
Op die manier is "123" ook nooit gelijk aan een geheel getal, en dat gingen we juist controleren. Je methode voldoet dus niet.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function is_geheel_getal_oisyn($a)
{
    return is_numeric($a) && $a == (int)$a;
}

function is_geheel_getal_aex351($a)
{
    return $a === (int)$a;
}

$waarden = array(123, "123", 123.0, 123.45, "123.45", "aap");
$oisyn = array();
$aex351 = array();

foreach ($waarden as $w)
{
    if (is_geheel_getal_oisyn($w))
        $oisyn[] = $w;
    if (is_geheel_getal_aex351($w))
        $aex351[] = $w;
}

echo "waarden oisyn: ";
var_dump($oisyn);

echo "waarden aex351:";
var_dump($aex351);


output:
waarden oisyn: array(2) { [0]=> int(123) [1]=> string(3) "123" [2]=> float(123) }
waarden aex351:array(1) { [0]=> int(123) }

dus, jammer maar helaas, jouw code werkt niet goed.

[ Voor 50% gewijzigd door .oisyn op 24-03-2006 16:28 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 10:41

aex351

I am the one

.oisyn schreef op vrijdag 24 maart 2006 @ 16:12:
[...]


Op die manier is "123" ook nooit gelijk aan een geheel getal, en dat gingen we juist controleren. Je methode voldoet dus niet.
het is daarom ook een reactie op jouw post B) en in die context klopt het wel wat ik heb gezegt.

[ Voor 11% gewijzigd door aex351 op 24-03-2006 16:17 ]

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ja reageer dan gewoon niet, en dat is je al vaker verteld :/

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 10:41

aex351

I am the one

.oisyn schreef op vrijdag 24 maart 2006 @ 16:19:
Ja reageer dan gewoon niet, en dat is je al vaker verteld :/
waarom ? wat je vertelde klopt gewoon niet en ik reageer daarop. Als je zo'n voorbeeld maakt dan is het namelijk ook fijn voor de TS om te begrijpen dat hij ook wel de juiste operator moet gebruiken.

[ Voor 23% gewijzigd door aex351 op 24-03-2006 16:23 ]

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

aex351 schreef op vrijdag 24 maart 2006 @ 16:22:
[...]

waarom ? wat je vertelde klopt gewoon niet en ik reageer daarop. Als je zo'n voorbeeld maakt dan is het namelijk ook fijn voor de TS om te begrijpen dat hij ook wel de juiste operator moet gebruiken.
omdat jij doet alsof je ontopic post terwijl dat niet zo is, zie daar de verwarring...

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oh? Wat is er dan fout aan mijn post? Klopt mijn code niet? Of zeg ik soms dat de === operator niet bestaat? Punt is dat mijn post wel klopt en relevant is voor deze draad, maar jij de context van de draad niet snapt en daarom nutteloze reacties gaat zitten posten.

En de topicstarter moet de === operator helemaal niet gebruiken omdat ie daar geen kont aan heeft. Hij heeft namelijk strings waarvoor hij wil controleren dat ze gehele getallen zijn. Anders waren we er met de is_int() functie al geweest, die ook eerder is aangedraagd. Dus lees voortaan de topic voor je blaat aub.

[ Voor 40% gewijzigd door .oisyn op 24-03-2006 16:26 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 10:41

aex351

I am the one

.oisyn schreef op vrijdag 24 maart 2006 @ 16:24:
Oh? Wat is er dan fout aan mijn post? Klopt mijn code niet? Of zeg ik soms dat de === operator niet bestaat? Punt is dat mijn post wel klopt en relevant is voor deze draad, maar jij de context van de draad niet snapt en daarom nutteloze reacties gaat zitten posten.

En de topicstarter moet de === operator helemaal niet gebruiken omdat ie daar geen kont aan heeft. Hij heeft namelijk strings waarvoor hij wil controleren dat ze gehele getallen zijn. Anders waren we er met de is_int() functie al geweest, die ook eerder is aangedraagd. Dus lees voortaan de topic voor je blaat aub.
maar wel voor het voorbeeld dat jij gegeven had.

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Blijft lastig he, lezen. Ik ga er niet eens verder op in.

[ Voor 61% gewijzigd door .oisyn op 24-03-2006 16:30 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • BBrunekreeft
  • Registratie: Mei 2004
  • Laatst online: 08:47

BBrunekreeft

Dus...

Reinder83 schreef op vrijdag 24 maart 2006 @ 14:32:
dan kan je nog alle punten en komma's eruit filteren
PHP:
1
2
3
4
5
<?
   if(is_numeric(str_replace(array(".", ","), array("", ""), $nummer)) {
      // check
   }
?>
Is daar de functie ctype_digit (http://nl3.php.net/manual/en/function.ctype-digit.php) niet handig voor?

Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
bedankt deze functie werkt perfect :)

is_int() werkte idd niet goed..

Acties:
  • 0 Henk 'm!

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 09:47
ctype_digit wil alleen een tekstueel getal... Wellicht dat de topicstarter die alleen heeft, maar om ook de andere gevallen te coveren...

Als ik dit moest hebben en ik kon niets vinden had ik er zelf wel iets op geschreven...
de gehele function kun je op 1 regel plaatsen. (mits je dat zelf goed keurt)
code:
1
2
3
4
5
6
7
8
9
10
11
<?
function is_whole_number($getal) { 
  for ($i=0;$i<strlen($getal);$i++) {
    if (!is_numeric($getal[$i])) {  return false; break; }
  }
  return true; 
}

if (is_whole_number("123,4")) { echo "is oke"; } 
else { echo "is dus niet oke"; }
?>

"123,4" = niet ok
"123" = ok
123,4 = niet ok
123 = ok

[ Voor 27% gewijzigd door Cheater op 24-03-2006 20:37 ]


Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
ctype_digit wil alleen een tekstueel getal...
wat bedoel je daar precies mee?

het is de bedoeling dat ik een functie krijg die checkt of de waarde een rond getal is (dus 1, 2, 3, enz en niet 1.3 of 1,3 en er mogen ook geen andere letters of leestekens in de waarde zitten)

Acties:
  • 0 Henk 'm!

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 09:47
Wat ik bedoel is, dat ctype_digit alleen "123" pikt, en niet 123.
Het eerste is een string, het tweede een getal. Hoewel de "123" string wel een getal vertegenwoordigd, is het toch een string, waar niet elke functie correct mee overweg kan. Hetzelfde geldt voor 123. ctype_digit lust dus geen 123. Wel "123".

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 10:36

Patriot

Fulltime #whatpulsert

@Cheater:

Is ctype_digit((string)$text); dan niet makkelijker?

Acties:
  • 0 Henk 'm!

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 09:47
timmie_loots schreef op vrijdag 24 maart 2006 @ 22:21:
@Cheater:

Is ctype_digit((string)$text); dan niet makkelijker?
Yup, mits je wist dat ctype_digit bestaat ;) no comment verder.

Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
ik snap niet wat je precies bedoeld, ik gebruik het op de volgende manier en het werkt goed:
code:
1
2
3
4
5
6
7
8
<?
$kliks = $_POST['kliks'];

if(!ctype_digit($kliks))
{
    $kliksfout = 1;
}
?>


jij wilt er mee zeggen dat ik eigenlijk if(!ctype_digit("$kliks")) moet doen?

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Ik doe het altijd zo:

PHP:
1
2
3
4
5
6
7
8
9
function isNumeric($var)
{
    if ((intval($var)) == $var)
    {
        return true;
    }
    
    return false;
}

[ Voor 6% gewijzigd door XWB op 26-03-2006 13:20 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Nee hij zegt dat de waarde die je invult gecast moet worden naar een string, want als je een int invult werkt het niet (volgens hem, heb het niet getest).

dus
PHP:
1
2
3
4
5
6
7
8
9
10
11
$kliks = $_POST['kliks']; // dit is altijd een string, wanneer je de 
                          // waarde ergens anders vandaan haalt moet je het 
                          //  volgende pas doen

$int = 13;
$kliks = (string)$int;  // hier vertaal je de waarde om naar een string

if(!ctype_digit($kliks))
{
    $kliksfout = 1;
}


edit: zo staat het dus ook in de comments @php.net:
Though we normally expect automatic type casting to do the work for us, in these ctype functions, you must do it yourself!
maar voor de netheid moet je natuurlijk altijd zelf casten

[ Voor 34% gewijzigd door flashin op 24-03-2006 23:36 ]


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Je hebt gelijk, had een verkeerde functie gepost (die gebruik ik voor wat anders ;)) Post aangepast.

March of the Eagles


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
het was eerder een reactie op de post voor jou, nofi :D

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
:p Nuja, het werkte bij mij ook niet wanneer je een int ingaf, dus :p

March of the Eagles


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

timmie_loots schreef op vrijdag 24 maart 2006 @ 22:21:
@Cheater:

Is ctype_digit((string)$text); dan niet makkelijker?
Beetje late reactie, maar is het dan niet ietsje netter om het gewoon zo te doen:
is_int($getal) || ctype_digit($getal)

Of het sneller is weet ik niet (sowieso maar een marginaal verschil), wel als je vooral ints hebt. Maar het drukt sowieso beter uit in code wat je eigenlijk weten wil en is imho daarmee wat netter.

Let er trouwens op dat je in dit geval (en elke variant met ctype_digital) negatieve, gehele getallen niet toelaat als het een string was.

[ Voor 13% gewijzigd door ACM op 26-03-2006 11:29 ]


Acties:
  • 0 Henk 'm!

Verwijderd

wat een rotzooi maken jullie ervan!
PHP:
1
2
3
4
5
6
<?PHP
if($getal%1<>0)
 echo"geen geheel getal";
else
 echo"geheel getal";
?>

Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

aukecomps: Ik dacht ook dat dat zou werken, maar als ik het test krijg ik er toch echt elke keer "geheel getal" uit :) . De andere manier die ik daar plaats werkt overigens wel.

DM!


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Heb je dat ook getest :?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?

$getallen = array(0, 0.12, '1', 'aap', 5, '544.1');

foreach($getallen as $getal)
{
        if($getal % 1 <> 0)
                echo "$getal is geen geheel getal\n";
        else
                echo "$getal is wel geheel getal\n";
}
?>


En als uitkomst:

0 is wel geheel getal
0.12 is wel geheel getal
1 is wel geheel getal
aap is wel geheel getal
5 is wel geheel getal
544.1 is wel geheel getal

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Verwijderd schreef op zondag 26 maart 2006 @ 12:33:
wat een rotzooi maken jullie ervan!
PHP:
1
2
3
4
5
6
<?PHP
if($getal%1<>0)
 echo"geen geheel getal";
else
 echo"geheel getal";
?>
Ieder zijn manier zullen we maar zeggen? Jouw oplossing geeft trouwens een true op kommagetallen ;)

edit, spuit 11 :p

[ Voor 58% gewijzigd door XWB op 26-03-2006 12:44 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Superstrict de topicstart volgen is trouwens volgens mij dit een van de weinige oplossingsvarianten:
PHP:
1
is_int($getal) || (is_string($getal) && preg_match('/^(0|-?[1-9][0-9]*)$/', $getal))


De andere varianten laten ofwel 1.0 toe (definitiekwestie, maar hoe kom je aan die 1.0 (0.999.. of (float)1 ?). Sowieso zit er een komma in), ze laten 001 toe en/of ze laten negatieve getallen weer niet toe.

[ Voor 4% gewijzigd door ACM op 26-03-2006 13:36 ]


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Jouw oplossing laat ook 1.0 toe :?

/edit
Logisch ook, 1 is gewoon 1.0 :p

[ Voor 39% gewijzigd door XWB op 26-03-2006 13:26 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Hacku schreef op zondag 26 maart 2006 @ 13:23:
Jouw oplossing laat ook 1.0 toe :?

/edit
Logisch ook, 1 is gewoon 1.0 :p
Neetoch?

Met
$getallen = array(0, 0.12, '1', 'aap', 5, '544.1', 1.0, '1.0', '0001', '-1');

0 is wel geheel getal
0.12 is geen geheel getal
1 is wel geheel getal
aap is geen geheel getal
5 is wel geheel getal
544.1 is geen geheel getal
1 is wel geheel getal
1.0 is geen geheel getal
0001 is geen geheel getal
-1 is wel geheel getal

[edit]
Ah... php maakt van die float 1.0 de float 1 en dus matched de regexp :X

Dan maar een is_string erbij...

[ Voor 14% gewijzigd door ACM op 26-03-2006 13:37 ]


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
En dat zal ie met 2.0, 3.0, ... ook wel doen. Een geheel getal kan je ook schrijven als een float met oneindig veel nullen achter de komma.

[ Voor 6% gewijzigd door XWB op 26-03-2006 13:35 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 21-09 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Hacku schreef op zondag 26 maart 2006 @ 13:23:
Logisch ook, 1 is gewoon 1.0 :p
Puur strict gezien is 1 != 1.0 en 1.0 != 1.00
1.0 is wel 1 :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

gorgi_19: Wiskundig gezien staat 1 voor 1.0rep, zover ik weet, en dus lijkt het me wel degelijk equivalent aan elkaar. Natuurkundig gezien weer niet.

DM!


Acties:
  • 0 Henk 'm!

Verwijderd

Hacku schreef op zondag 26 maart 2006 @ 12:44:
[...]


Ieder zijn manier zullen we maar zeggen? Jouw oplossing geeft trouwens een true op kommagetallen ;)

edit, spuit 11 :p
dat is gewoon een bug van php, voor zover ik weet moeten kommagetallen ook meegerekend worden.

[ Voor 53% gewijzigd door Verwijderd op 26-03-2006 16:14 . Reden: verkeerde quote ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op zondag 26 maart 2006 @ 16:12:
[...]


dat is gewoon een bug van php, voor zover ik weet moeten kommagetallen ook meegerekend worden.
Niks geen bug, dat is allemaal by design. Waarom er verder voor gekozen is weet ik ook niet, maar om het meteen maar op een bug te gooien vind ik wat ver gaan. ;)

'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!

Verwijderd

-NMe- schreef op zondag 26 maart 2006 @ 17:20:
[...]

Niks geen bug, dat is allemaal by design. Waarom er verder voor gekozen is weet ik ook niet, maar om het meteen maar op een bug te gooien vind ik wat ver gaan. ;)
designbug:
http://nl.wikipedia.org/wiki/Modulo
* 20.33/7 = 2.90.

*
o De rest is 0.03 indien de gewenste nauwkeurigheidsgraad van het quotiënt twee decimalen is (conform die van het deeltal).
o Wensen we echter een nauwkeurigheid tot drie decimalen dan geeft de deling het resultaat 2.904 met rest 0.005.
o Zouden we ons tevreden met een nauwkeurigheid van 0 of 1 decimaal dan is de rest 0.03 of afgerond 0. Een rest die minder nauwkeurig is dan het deeltal is absurd tenzij het deeltal eerst afgerond wordt tot diezelfde nauwkeurigheid: 20/7 = 2 rest 6
nou ja, bug... er is gekozen om geen enkele decimaal precies te zijn, terwijl er veel meer beschikbaar zijn. niet echt netjes dus

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

In elke taal die ik ken die de modulo implementeert in een operator is deze modulo geïmplementeerd als de resterende integerwaarde bij een deling. Als PHP het volgens jou fout doet, dan geldt dat ook voor C, C++ en Java. :)

'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!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

aukecomps: waarom denk je dat de functie fmod bestaat? ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op zondag 26 maart 2006 @ 16:12:
dat is gewoon een bug van php, voor zover ik weet moeten kommagetallen ook meegerekend worden.
Zelfs als het een bug was, en je inderdaad een rest hoorde te krijgen voor floating points zou de case van een normale string ('aap') alsnog onterecht als een integer worden beschouwd door casting. ;)

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
WIskundig gezien:

PHP:
1
2
3
4
$float = 5.0;
if(fmod($float, 1.0) == 0) {
   // getal is een veelvoud 1 dus een geheel getal
}


toch? :)

Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

MisterData schreef op zondag 26 maart 2006 @ 22:28:
WIskundig gezien:

PHP:
1
2
3
4
$float = 5.0;
if(fmod($float, 1.0) == 0) {
   // getal is een veelvoud 1 dus een geheel getal
}


toch? :)
Neen, getal is een veelvoud van 1.0 ;)
Pagina: 1