Page 1 sur 1

Erreur de calcul

Posté : 20 juil. 2019, 20:56
par dmr
Bonjour,

J'aimerais réaliser un calcul en utilisant des nombres placés dans 3 fichiers différents mais ça coince...

Voici le code utilisé
<?php
$fichier_capacite = "colloque.count";
$fichier_next = "colloque.nxt";
$fichier_annulations = "annulations.count";

$erreur_inattendue = "Fichier manquant -> impossible de continuer";

$nbre_max = 0;
$nbre_inscriptions = 0;
$nbre_annulations = 0;
$nbre_total = 0;


if(file_exists($fichier_capacite)){
	$nbre_max = file_get_contents($fichier_capacite);
}else{die($erreur_inattendue);}

if(file_exists($fichier_next)){
	$nbre_inscriptions = file_get_contents($fichier_next);
}else{die($erreur_inattendue);}

if(file_exists($fichier_annulations)){
	$nbre_annulations = file_get_contents($fichier_annulations);
}else{die($erreur_inattendue);}

print "<br/>Capacité maximale: ".$nbre_max;
print "<br/>Nbre d'inscriptions: ".$nbre_inscriptions;
print "<br/>Nbre d'annulations: ".$nbre_annulations;

$nbre_places = (int)($nbre_inscriptions - $nbre_annulations);
print "<br/>".$nbre_places;

$nbre_places = ($nbre_max - $nbre_places);
print "<br/>".$nbre_places;
?>
$nbre_max vaut 100
$nbre_inscriptions vaut 11
$nbre_annulations vaut 5

Le premier $nbre_places me donne bien 6 (11-5)
Par contre le second $nbre_place me donne -6 alors qu'il devrait donner 94 (100-6).

Qui peut me donner une explication à ce résultat ?

D'avance merci

Re: Erreur de calcul

Posté : 20 juil. 2019, 21:22
par or 1
$nbre_inscriptions = 11;
$nbre_annulations = 5;

$nbre_places = (int)($nbre_inscriptions - $nbre_annulations);
print "<br/>".$nbre_places;
$nbre_max = "&nbsp;100";
print "<br/>".$nbre_max;
$nbre_places = ($nbre_max - $nbre_places);
print "<br/>".$nbre_places;

$nbre_places = (int)($nbre_inscriptions - $nbre_annulations);
print "<br/>".$nbre_places;
$nbre_max = " 100\r\n";
print "<br/>".$nbre_max;
$nbre_places = ($nbre_max - $nbre_places);
print "<br/>".$nbre_places;
donne
6
100
-6
6
100
94

j'en conclus que $nbre_max semble contenir 100 mais ne contient pas 100, ni une valeur qui une fois convertie vaut 100.

Re: Erreur de calcul

Posté : 20 juil. 2019, 22:00
par dmr
Pourtant c'est bien le nombre qui est indiqué dans le fichier.
Mais ta réponse m'a fait penser à un truc...

Je viens de vérifier l'encodage du fichier et je viens de constater que celui qui contient 100 était encodé en "UTF-8" alors que les 2 autres étaient en "UTF-8 (sans BOM)".

En convertissant l'UTF-8 en "UTF-8 (sans BOM)", le résultat du calcul est correct ; idem si je convertis les 3 fichiers en "ANSI".
Par contre, si les 3 fichiers sont encodés en "UTF-8", les 2 calculs donnent 0.

Le problème est donc résolu même si je n'ai pas encore bien compris le pourquoi...

Merci