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:   [EMAIL PROTECTED]      
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:[EMAIL PROTECTED] 
Sent: sexta-feira, 17 de Fevereiro de 2006 20:40
To: php-general@lists.php.net; [EMAIL PROTECTED]
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

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to