Addition de deux variables formatées avec number_format
TomLlgDlc
-
pierre.lagoutte Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
pierre.lagoutte Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Addition de deux variables formatées avec number_format
- Addition excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Bash addition ✓ - Forum Shell
1 réponse
Bonjour,
number_format revoie une chaîne de caractères (string), il est donc normal que vous ne puissiez pas les additionner.
Je peux vous proposer deux solutions : soit vous gardez la variable float d'origine été n'utilisez number_format que pour l'affichage final, soit vous utilisez cette petite fonction (je ne l'ai pas testée) :
Je reste à votre entière disposition si le code ci-dessus ne fonctionne pas ou si vous ne le comprenez pas.
Cordialement
number_format revoie une chaîne de caractères (string), il est donc normal que vous ne puissiez pas les additionner.
Je peux vous proposer deux solutions : soit vous gardez la variable float d'origine été n'utilisez number_format que pour l'affichage final, soit vous utilisez cette petite fonction (je ne l'ai pas testée) :
function add($a, $b) // a et b sont des chaînes de caractères formatées avec number_format() { $arrayA = explode(',', $a); // On sépare la chaîne en deux : la partie entière et décimale $arrayB = explode(',', $b); // On sépare la chaîne en deux : la partie entière et décimale $result = $arrayA[0] + $arrayB[0]; // On additionne les deux partie entières if($arrayA[1] + $arrayB[1] >= 100) // Si la partie décimale est supérieure à 100 { $result += 1; // On ajoute 1 au résultat $result += ($arrayA[1] + $arrayB[1] - 100) / 100; // On ajoute la partie décimale après avoir soustrait 100 } return $result; // On retourne le résultat }
Je reste à votre entière disposition si le code ci-dessus ne fonctionne pas ou si vous ne le comprenez pas.
Cordialement