RE: [PHP] Problem with HUGE floating values and fmod
| From: | Marco Almeida | Date: | Sat, 18 Feb 2006 12:20:05 +0000 |
| Subject: | RE: [PHP] Problem with HUGE floating values and fmod | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-230683@lists.php.net to get a copy of this message | ||
THANKS!
That did the trick.
For future reference to all people needing to calculate check digits with
ISO 7604 (MOD 97-10) method:
$check=98-bcmod(($num."00"),97);
The ."00" part is imporant... If $num was multiplied by 100 we wouldn't get
a correct value in bcmod.
Marco Almeida
Project Manager
WEBDADOS
Tecnologias de Informação
Telef.: +351 21 466 93 00
Fax: +351 21 466 42 81
Móvel: +351 96 324 43 44
Email: marcoalmeida@webdados.pt
www: http://www.webdados.pt
Morada: R. 9 de Abril, 3-3A, Sala 4
2765-545 S. Pedro do Estoril
-----Original Message-----
From: Curt Zirzow [mailto:czirzow@gmail.com]
Sent: sexta-feira, 17 de Fevereiro de 2006 20:40
To: php-general@lists.php.net; marcoalmeida@webdados.pt
Subject: Re: [PHP] Problem with HUGE floating values and fmod
On Fri, Feb 17, 2006 at 06:48:13PM -0000, Marco Almeida wrote:
> Hi there,
>
> I'm trying to calculate check digits for a payment system, using the
> ISO
> 7064 (MOD 97-10) algorithm, wich is, already translated to PHP:
>
> $check=98-fmod(($num*100),97);
>
> Where $num is a huge number...
>
> Example: 90150123123400043211 should have check digit 51 In windows
> calculator: 98 - ( (90150123123400043211 * 100) mod 97) works OK and I
> get 51 as result
>
> In PHP I get 13...
You will need to use GMP or BCMath to do math operations numbers that size.
See:
http://php.net/language.types.integer.php
Curt.
--
cat .signature: No such file or directory