PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

gmp_intval> <gmp_hamdist
Last updated: Fri, 10 Oct 2008

view this page in

gmp_init

(PHP 4 >= 4.0.4, PHP 5)

gmp_initCrée un nombre GMP

Description

resource gmp_init ( mixed $number [, int $base ] )

Crée un nombre GMP, à partir d'un entier ou d'une chaîne.

Liste de paramètres

number

Un entier ou une chaîne de caractères. La chaîne peut être une représentation décimale, hexadécimale ou octale.

base

La base. Par défaut, vaut 0.

La base peut varier de 2 à 36. Si la base vaut 0 (valeur par défaut), la base actuelle est déterminée depuis les derniers caractères ; si les deux premiers caractères sont 0x ou 0X, on suppose que c'est de l'hexadécimal, sinon, si le premier caractère est "0", on suppose que c'est de l'octal, sinon, on suppose que c'est de la décimale.

Valeurs de retour

Une ressource GMP.

Historique

Version Description
4.1.0 Le paramètre optionnel base a été ajouté.

Exemples

Exemple #1 Création d'un nombre GMP

<?php
$a 
gmp_init(123456);
$b gmp_init("0xFFFFDEBACDFEDF7200");
?>

Notes

Note: Il n'est pas nécessaire d'appeler gmp_init() si vous voulez utiliser des entiers ou des chaînes à la place de nombre GMP dans les fonctions GMP, comme gmp_add(). Les arguments de ces fonctions sont automatiquement convertis en nombres GMP, si cette conversion est possible et nécessaire, en utilisant les mêmes règles que gmp_init().



gmp_intval> <gmp_hamdist
Last updated: Fri, 10 Oct 2008
 
add a note add a note User Contributed Notes
gmp_init
charlie at oblivion dot cz
18-Feb-2007 01:55
gmp_* functions don't accept strings with a leading '+':
<?php
echo gmp_strval(gmp_init('+42'));      #0
echo gmp_strval(gmp_add('42', '+42')); #42
echo bcadd('+42', '+42');              #84
?>
php at richardneill dot org
20-Sep-2006 12:30
Here's a way to parse a decimal (eg 3.25) into an integer and exponent:

<?
if (preg_match("/^[0-9]+\.[0-9]+$/",$input)){
    
//Input is a base-10 decimal. Multiply as necessary to remove the decimal
     //point. Convert that to a gmp_resource, then decrement the exponent
     //to compensate.

    
$pieces=explode(".", $input);     //Split at the d.p.
    
$input="$pieces[0]$pieces[1]"//Remove the decimal point.

    
$input=ltrim($input,'0');   
    
//Remove any leading zeros, or gmp_init will parse the number as octal.

    
if ($input==''){    //Deal with "0.0" which would otherwise be ''.
         
$input=0;
      }
     
$integer=gmp_init($input);  
     
$ns_exponent=-strlen($pieces[1]); 
    
//exponent = (-)  the number of characters after the decimal point.
}
?>
php at richardneill dot org
20-Sep-2006 12:14
Note: Leading zeros will make gmp_init parse this as octal.
Thus gmp_init(010) becomes 8. 

$a=010;              //8
$b="010" + 0;     //10
$c=gmp_strval(gmp_init(010));    //8
$d=gmp_strval(gmp_init("010")); //8

This behaviour is inconsistent: either $d should equal $b, or
$b should equal $a.
thomas dot hebinck at digionline dot de
18-Aug-2005 07:23
If you call a gmp_* function directly with an interger as parameter, this integer MUST NOT be 0:

for($i=-1;$i<=1;$i++) {  echo gmp_strval(gmp_add(2,gmp_mul(1,$i))) . ' ';  }

The result is 1 0 3 (wrong)

In this case you have to use gmp_init():

for($i=-1;$i<=1;$i++) {  echo gmp_strval(gmp_add(2,gmp_mul(1,gmp_init($i)))) . ' ';  }

The result is 1 2 3 (right)

Happy number crunching! :-)

gmp_intval> <gmp_hamdist
Last updated: Fri, 10 Oct 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites