[RESOLU] Erreur de calcul

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Erreur de calcul

Re: Erreur de calcul

par dmr » 20 juil. 2019, 22:00

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

Re: Erreur de calcul

par or 1 » 20 juil. 2019, 21:22

$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.

Erreur de calcul

par dmr » 20 juil. 2019, 20:56

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