Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 21h04   #1
Invité de passage
 
Inscription : février 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 44
Points : 4
Points : 4
Par défaut Les nombres décimaux

Bonjour,

Je me prends la tête sur des calculs mathématiques "très simple" .. une addition mais le problème c'est que l'addition comporte +de 10 chiffres.

Code :
1
2
3
4
5
6
 
<?php
echo 12345678919+0.1234;
ou 
echo floatval(12345678919+0.1234);
?>
Le résultat est 12345678919,1 au lieu de 12345678919,1234. (les 4 chiffres aprés la virgule son important)
Quelqu'un a une idée ?

Merci.

Cordialement,
Sid.
sidacoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 22h29   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonsoir,

regrdes du côté de BCMath

Code :
echo bcadd('12345678919', '0.1234');
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 22h36   #3
Invité de passage
 
Inscription : février 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 44
Points : 4
Points : 4
Bonsoir,

Pour moi cette réponse me retourne : 12345678919

Code :
<?php echo bcadd(12345678919, 0.1234); ?>
Une autre solution ?
Merci.
sidacoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 22h40   #4
Invité de passage
 
Inscription : février 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 44
Points : 4
Points : 4
Bonsoir,

Ok il suffit d'ajouter combien nous voulons de chiffres aprés la virgules 4 par exemple :

Code :
1
2
3
4
5
6
7
<?php
$a = '1.234';
$b = '5';
 
echo bcadd($a, $b);     // 6
echo bcadd($a, $b, 4);  // 6.2340
?>
sidacoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 22h41   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 793
Points : 35 793
Citation:
Envoyé par sidacoq
Une autre solution ?
Euh... oui, lire la doc du lien que t'a fourni rawsrc :
Citation:
left_operand

L'opérande gauche, sous la forme d'une chaîne de caractères.
right_operand

L'opérande droite, sous la forme d'une chaîne de caractères.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 22h44   #6
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Et je te conseille de bien manipuler tes grands nombres comme des strings. Sinon bonjour les surprises :
Code :
1
2
$a = bcadd(123456799999999999999999999999999999999999, 0.999999, 5);
$b = bcadd('123456799999999999999999999999999999999999', '0.999999', 5);
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 23h37   #7
Invité de passage
 
Inscription : février 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 44
Points : 4
Points : 4
Merci pour vos réponses.
Toutefois, je n'arrive pas à convertir un integer en string pour l'utiliser dans la fonction bcadd...

Code :
1
2
3
$time = 1318971774.12;
$time = strval($time);
echo bcadd($time,'0.012', 3);
Ca ne fonctionne pas merci.
sidacoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 08h47   #8
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par sidacoq Voir le message
Ca ne fonctionne pas merci.
T'es sûr ? Chez moi ça fonctionne sans problèmes => 1318971774.132

Pour le transtypage en PHP voici un lien qui devrait t'en apprendre plus.
Et pour convertir en string voici plusieures méthodes arrivant toutes au même résultat :
Code :
1
2
3
4
5
6
<?php
$a = 10;            // $a est un entier
$b = "$a";          // $b est une chaîne
$c = (string) $a;   // $c est une chaîne
$d = strval($a);    // $d est une chaîne
?>
Le transtypage le plus rapide est $b.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 10h30   #9
Invité de passage
 
Inscription : février 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 44
Points : 4
Points : 4
Merci pour ton retour mais bizarre ca ne fonctionne pas.
Je suis tout à fait d'accord sur le transcryptage mais justement je ne comprends pas pk ca ne fonctionne pas...

Code :
1
2
3
4
 
$time = 1318971774.12;
$time = strval($time);
echo bcadd($time,'0.012', 3);
Code :
1
2
3
$time = 1318971774.12;
$time = (string)$time;
echo bcadd($time,'0.012', 3);
Me retourne le même résultat : 0.012

Étrange non
sidacoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 19h39   #10
Invité de passage
 
Inscription : février 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 44
Points : 4
Points : 4
Aucune autre idée les gars ?
Je suis vraiment bloqué sur mon projet c'est dommage... je reste dans l'attente d'une réponse.
Merci.
sidacoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 20h29   #11
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 793
Points : 35 793
Tu es sûr que bcmath est activé ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 21h22   #12
Invité de passage
 
Inscription : février 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 44
Points : 4
Points : 4
oui comme il me retourne une valeur ...
sidacoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 21h45   #13
Invité de passage
 
Inscription : février 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 44
Points : 4
Points : 4
Un autre exemple :

Code :
1
2
3
4
<?php
$time = time();
echo bcadd($time,'0.02', 3);
?>
çà ça fonctionne !!

Code :
1
2
3
4
<?php
$time = microtime(true);
echo bcadd($time,'0.02', 3);
?>
Ça ne fonctionne pas, ça me retourne 0.020

sidacoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h54.


 
 
 
 
Partenaires

Hébergement Web