Bonjour,

J'ai fait un script pour vérifier les RIB :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
#!/usr/bin/perl
 
#use strict;
#use warnings;
use POSIX;
use Math::BigInt;
use Math::BigFloat;
 
sub verif_rib() {
	my $rib = Math::BigFloat->new($_[0]);
	my $varControle = 97;
	my $retour = $rib*100;
	print $retour." RIB X 100\n";
 
	$retour = Math::BigFloat->new($retour);
	$retour = $retour/$varControle;
	print $retour." RETOUR / VARCONTROLE\n";
 
	$retour = Math::BigInt->new(floor($retour));
	#$retour = floor($retour);
	print $retour." FLOOR \n";
 
	$retour = $retour*$varcontrole;
	print $retour."\n";
 
	$retour = ($rib*100)-$retour;
	print $retour."\n";
 
	my $key = $varControle-$retour;
	return $key;
}
 
my $retour = &verif_rib('300020695200000057933');
print $retour."\n";
#&format_compte();
Le problème vient du floor qui me retourne une mauvaise valeur.

Avez-vous une idée ?

Merci

Fluxy__