[RESOLU] Addition deux var formatée avec number_format

momo33
Invité n'ayant pas de compte PHPfrance

20 juil. 2016, 14:55

Bonjour à tous,

c'est mon premier post sur un forum, donc si je fais mal n'hésitez pas à me prévenir.

Je suis en train d'essayer de passer des nombres à point (2.2 / 150.25 par exemple) à des nombres avec virgules (2,2 / 150,25). Après avoir écumé la toile, number_format m'a semblé la meilleur solution, tout marche parfaitement quand je convertis les nombre, mais si je les additionne (chose qui m'est indispensable), le résultat est un nombre sans virgule ni point.

Voici mon code :
<html>
<head>
	<meta charset="utf-8" />
</head>
<?php
	function setMinutes($minutesNouv) {

		if ( $minutesNouv == 00 || $minutesNouv == 15 || $minutesNouv == 30 || $minutesNouv == 45 ) {
			$minutes = $minutesNouv;
		} else {
			$minutes = 0;

		}
	}
	function getHeuresDecimales($heures, $minutes) {
		$time = $heures + ($minutes / 60);
		$time = number_format($time, 2, ",", "");
		return $time;
	}

	function setHeuresDecimales($heuresD) {
		$heures = floor(floatval($heuresD));
		setMinutes((floatval($heuresD) - floor(floatval($heuresD))) * 60);
	}
	
	$heure = getHeuresDecimales(10, 30);
	$heure1 = getHeuresDecimales(3, 30);
	echo $heure . '<br>';
	echo $heure1 . '<br>';
	echo $heure + $heure1;

?>
<body>
	<p>Convertir avec virgule</p>
</body>
</html>
et voici le résultat :

10,50
3,50
13
Convertir avec virgule

Je ne vois vraiment pas d'où cela peut venir, si quelqu'un peut m'aider.
Modifié en dernier par moogli le 20 juil. 2016, 16:56, modifié 1 fois.
Raison : Ajout colorisation du code :-)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 juil. 2016, 17:01

salut,

php est à la mode anglo-saxonne, il lui faut des point comme séparateur décimal.

du coup il faut faire le number_format après le calcul.

d'une manière général il faut réserver ce type de fonction à l'affichage. ce te permet de travailler avec des données brute 'correctes' et de gérer ce qui n'est qu'une préférence d'affichage (si demain tu internationalise la chose il faudra revoir le code partout, alors que la c'est qu'a l'affichage ;) )

PS les balises pour mettre le code en couleur c'est ["langage"][/"langage"] par exemple
 [ /php] (sans l'espace devant le / ;) )

@+
Il en faut peu pour être heureux ......

momo33
Invité n'ayant pas de compte PHPfrance

21 juil. 2016, 09:19

Merci pour tous ces conseils, ca m'avance bien et effectivement en appliquant number_format sur l'affichage (echo) ça marche mieux.

Bonne journée Mowgli !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 juil. 2016, 10:56

Modération :
Puisque ta question est résolue, je l'indique en cliquant sur le bouton "Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

Tu peux réaliser cette opération toi-même en cliquant sur le bouton situé en haut de la page, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)


sinon de rien :)

@+
Il en faut peu pour être heureux ......