Problème opérateur php

Résolu/Fermé
88av Messages postés 262 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 - 27 mars 2013 à 12:45
88av Messages postés 262 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 - 15 mars 2014 à 13:15
Bonjour,

J'ai un problème :

Je créer un site html/CSS/php ( en local ) qui doit convertir des poids.

Le problème est que quand on entre un nombre de gramme et que l'on clique sur convertir, le résultat des tonnes n'est pas un chiffre normal, il y a une lettre dans ce chiffre.


Je voudrait que cette lettre ne n'affiche plus et que le résultat soit entièrement en chiffres.

Voici une partie de mon code :

<center>
<strong>Entrez un nombre de gramme :</strong><br/>
<form method="POST" action="gramme.php">
<input type="text" name="gra" style="text-align: center;" /><br/>
<input type="submit" name="gramme" value="convertire"/>
</form><br/>

<?php

if(isset($_POST['gramme'])){
$gra=$_POST['gra'];

$resultat_milli=$gra*1000; //3 zéros
$resultat_centi=$gra*100; //2 zéros
$resultat_deci=$gra*10; //1 zéros
$resultat_gramme=$gra/1; //0 zéros
$resultat_deca=$gra/10; //1 zéros
$resultat_hecto=$gra/100; //2 zéros
$resultat_kilo=$gra/1000; //3 zéros
$resultat_dizaine=$gra/10000; //4 zéros
$resultat_quintal=$gra/100000; //5 zéros
$resultat_tonne=$gra/1000000; //6 zéros


echo '
'.$gra.' gramme font '.$resultat_milli.' milligramme</br></br>
'.$gra.' gramme font '.$resultat_centi.' centigrammes</br></br>
'.$gra.' gramme font '.$resultat_deci.' décigrammes</br></br>
'.$gra.' gramme font '.$resultat_gramme.' grammes</br></br>
'.$gra.' gramme font '.$resultat_deca.' décagrammes</br></br>
'.$gra.' gramme font '.$resultat_hecto.' hectogrammes</br></br>
'.$gra.' gramme font '.$resultat_kilo.' kilogrammes</br></br>
'.$gra.' gramme font '.$resultat_dizaine.' dizaines de kilogrammes</br></br>
'.$gra.' gramme font '.$resultat_quintal.' quintaux</br></br>
'.$gra.' gramme font '.$resultat_tonne.' tonnes</br></br>

'


;}

?>



</center>







5 réponses

Utilisateur anonyme
21 avril 2013 à 16:47
Bonjour

Cette 'lettre anormale' ne serait pas un 'e' par hasard ?
Si tu as tapé un petit nombre de grammes, le résultat en tonnes est un nombre tellement petit qu'il est affiché en notation scientifique qui utilise la lettre 'e' pour indiquer une puissance de 10. À l'inverse, si tu entres un très grand nombre de grammes, c'est vers les petites unités (milligrammes, centigrammes...) que tu vas retrouver ce 'e'.
1
88av Messages postés 262 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 7
21 avril 2013 à 16:51
Oui, c'est ça, c'est la lettre E. Je voudrait savoir si il existe un moyen pour ne pas l'avoir.



Merci d'avance.
0
Utilisateur anonyme
21 avril 2013 à 16:58
C'est possible, mais je ne connais pas de moyen simple.
Il faut partir du nombre qui t'a été donné au départ (qui avait été saisi sous forme d'une chaîne de caractères), et faire tes conversions non pas sous forme de nombres mais directement sur le texte en décalant la virgule et en ajoutant ou supprimant des zéros...
0
88av Messages postés 262 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 7
22 mai 2013 à 09:28
Donc, c'est asser compliqué.
0
Utilisateur anonyme
27 mai 2013 à 02:15
Bonsoir,
en fait il y a moyen de repousser le nombre de virgule après le zéro, mais c'est pas très pratique. je vais tout de même vous montrez ce qui pourrait être envisagé.


avec ceci :

number_format($nombre,2); on met 2 chiffres après la virgule du chiffre $nombre

Donc je me suis dis que si on comptait le nombre de chiffrres de vos résultats et on pourrait s'en servir

Bon ce que j'ai fait fonction à peu pret mais il va falloir régler tout comme il faut si tu décide de t'en servir. C'est pas de la mécanique de précision, mais là il est tard et je vais me coucher.

Bonne chance

<center>
			<strong>Entrez un nombre de gramme	:</strong>
			<br/>
			<form method="POST" action="index.php">
				<input type="text" name="gra" style="text-align: center;" />
				<br/>
				<input type="submit" name="gramme" value="convertire"/>
			</form>
			<br/>

			<?php
			if(isset($_POST['gramme'])) {
			$gra=$_POST['gra'];
				
			$tab1[0]=$resultat_milli=$gra*1000;
			//3 zéros
			$tab1[1]=$resultat_centi=$gra*100;
			//2 zéros
			$tab1[2]=$resultat_deci=$gra*10;
			//1 zéros
			$tab1[3]=$resultat_gramme=$gra/1;
			//0 zéros
			$tab1[4]=$resultat_deca=$gra/10;
			//1 zéros
			$tab1[5]=$resultat_hecto=$gra/100;
			//2 zéros
			$tab1[6]=$resultat_kilo=$gra/1000;
			//3 zéros
			$tab1[7]=$resultat_dizaine=$gra/10000;
			//4 zéros
			$tab1[8]=$resultat_quintal=$gra/100000;
			//5 zéros
			$tab1[9]=$resultat_tonne=$gra/1000000;
			//6 zéros
			
			$tab2[0]=$nbr_milli=$resultat_milli.strlen;
			$tab2[1]=$nbr_centi=$resultat_centi.strlen;
			$tab2[2]=$nbr_deci=$resultat_deci.strlen;
			$tab2[3]=$nbr_gramme=$resultat_gramme.strlen;
			$tab2[4]=$nbr_deca=$resultat_deca.strlen;
			$tab2[5]=$nbr_hecto=$resultat_hecto.strlen;
			$tab2[6]=$nbr_kilo=$resultat_kilo.strlen;
			$tab2[7]=$nbr_dizaine=$resultat_dizaine.strlen;
			$tab2[8]=$nbr_quintal=$resultat_quintal.strlen;
			$tab2[9]=$nbr_tonne=$resultat_tonne.strlen;
			
			$tab3[0]='milligramme';
			$tab3[1]='centigrammes';
			$tab3[2]='décigrammes';
			$tab3[3]='grammes';
			$tab3[4]='décagrammes';
			$tab3[5]='hectogrammes';
			$tab3[6]='kilogrammes';
			$tab3[7]='dizaines de kilogrammes';
			$tab3[8]='quintaux';
			$tab3[9]='tonne';
			
			for($i=0;$i<10;$i++) {
			if($tab1[$i]<0.0001) {
			echo $gra.' gramme font '.number_format($tab1[$i],$tab2[$i]+6).' '.$tab3[$i].'</br></br>';
			} elseif($tab1[$i]<0.00001) {
			echo $gra.' gramme font '.number_format($tab1[$i],$tab2[$i]+7).' '.$tab3[$i].'</br></br>';
			} else {
			echo $gra.' gramme font '.$tab1[$i].' '.$tab3[$i].'</br></br>';
			}
			}
			}
			?>
		</center>

1
88av Messages postés 262 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 7
21 avril 2013 à 15:32
Quelqu'un pourrait m'aider ?


S'il vous plait.
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
21 avril 2013 à 15:55
Bonjour,

Je viens de tester ton code PHP et j'ai entré le chiffre 100 (pour 100 grammes) dans le formulaire et je ne vois pas de lettre "étrange" s'afficher dans le nombre de tonnes ?
Voici le résultat du test (copier/coller depuis mon navigateur) :

100 gramme font 100000 milligramme
 100 gramme font 10000 centigrammes
 100 gramme font 1000 décigrammes
 100 gramme font 100 grammes
 100 gramme font 10 décagrammes
 100 gramme font 1 hectogrammes
 100 gramme font 0.1 kilogrammes
 100 gramme font 0.01 dizaines de kilogrammes
 100 gramme font 0.001 quintaux
 100 gramme font 0.0001 tonnes

Cdlt.
0
88av Messages postés 262 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 7
26 mai 2013 à 20:34
Quelqu'un connecterait un moyen simple SVP ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
88av Messages postés 262 Date d'inscription dimanche 3 mars 2013 Statut Membre Dernière intervention 17 avril 2015 7
15 mars 2014 à 13:15
Merci, j'ai adapté le code, et ça donne ça :

function ecrire_nombre($nombre){
	if(is_numeric($nombre)==true){
		if(strpos($nombre, 'E')!=FALSE){
			$valeur = substr($nombre, 0, strpos($nombre, 'E')); // Nombre avant le E
			$deux=substr($nombre, strpos($nombre, 'E')+1); // Nombre après E
			if(substr($deux, 0, 1)=='-'){
				$deux=substr($deux, 1);
				for($n=$deux;$n!=0;$n--){
					$valeur='0'.$valeur;
					$position_virgule=strpos($valeur, '.');
					$valeur=substr($valeur, 0, $position_virgule).substr($valeur, $position_virgule+1);
					$position_virgule--;
					$valeur=substr_replace ( $valeur, '.', $position_virgule ,0 );
				};
				return $valeur;
			}
			elseif(substr($deux, 0, 1)=='+'){
				$deux=substr($deux, 1);
				for($n=$deux;$n!=0;$n--){
					$valeur='0'.$valeur;
					$position_virgule=strpos($valeur, '.');
					$valeur=substr($valeur, 0, $position_virgule).substr($valeur, $position_virgule+1);
					$position_virgule++;
					$valeur=substr_replace ( $valeur, '.', $position_virgule ,0 );
				};
				return $valeur;
			};
		}
		elseif(strpos($nombre, '.')!=FALSE){ // Si le nombre est décimal
			return number_format($nombre, strlen($nombre)-strpos($nombre, '.')-1, ',', ' ');
		}
		else {
			return number_format($nombre, 0, ',', ' ');
		};
	}
	else {
		return FALSE ;
	};
};

$resultat_milli=ecrire_nombre($resultat_milli);


Merci, et au revoir
0