Opération sur une chaine de caractère

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 : Opération sur une chaine de caractère

par zepretender » 24 oct. 2006, 11:54

Merci !

En fait, je me suis mal exprimé... Du coup, c'est l'une des solutions avancées qui est la bonne :

8.4848
$a = 8
$b = 0.4848

Du coup, le

8.4848-$a est bon !

Merci en tous cas, ça va m'aider pour la suite !

par graphistnet » 23 oct. 2006, 22:50

mais dans l'énoncé il n'a jamais dit que son nombre avait toujours le meme nombre de chiffre derriere la virgule ?
Ca n'a aucune importance, le tout est de savoir qu'il y a une virgule qui va servir de séparateur :wink:

par sacco » 23 oct. 2006, 22:22

mais dans l'énoncé il n'a jamais dit que son nombre avait toujours le meme nombre de chiffre derriere la virgule ?

par Ajoloca » 23 oct. 2006, 17:56

Re, c'est aussi vrai !

par Ryle » 23 oct. 2006, 17:53

Y a peut être pas besoin d'une fonction pour la réutilisabilité de la chose, on va aussi vite à utiliser directement le tableau retourné par explode() qu'à passer par une fonction nan ?
$valeur = 8.4848; 
$tab = explode(".", $valeur); 
echo $tab[0] . ' - ' . $tab[1]; // Affiche 8 - 4848 

par Ajoloca » 23 oct. 2006, 17:50

Re,

Et pour le faire réutilisable
<?php
function intDec($valeur, &$int, &$dec){
	list($int, $dec) = explode(".", $valeur);
}
$total = 8.4848;
intDec($total, $int, $dec);
echo $int . ' - ' . $dec; // Affiche 8 - 4848
?>

par Vikchill » 23 oct. 2006, 17:49

Oui moi aussi je vote pour l'explode hein :mrgreen: J'avais mal lu l'énoncé du problème, c'est pour ça qu'après je me suis rattrapé aux branches :mrgreen:

par Ryle » 23 oct. 2006, 17:38

Je vote aussi pour l'explode... pas besoin de se soucier de la longueur, du résultat de la division euclidienne, ou de l'age du capitaine... y a deux chaines séparées par un point, on les split et c'est fini :)

par Ajoloca » 23 oct. 2006, 17:30

Re,

Et pourquoi faire simple quand en peu faire compliqué ?

par Vikchill » 23 oct. 2006, 17:28

Bah si tu veux rester dans les formules mathématiques, $b c'est la partie décimale de ta valeur de départ multiplié par 10 exposant le nombre de décimales. Ici $b fait 4 caractères, tu fais $b*10^4, si ça faisait 6 caractères tu ferait $b*10^6.

Je sais, ça devient tordu, mais à un problème il y a souvent beaucoup de solutions.

par Ajoloca » 23 oct. 2006, 17:18

Je dirais que $a c'est la partie entière et que $b c'est ta valeur de départ moins $a, donc un petit intval devrait le faire.
Ce qui nous donnerais
8.4848
$a = 8 // OK
mais
8.4848 - 8 est = à 0.4848 et non 4848
en d'autres termes je me retrouve avec le même problème mais avec des valeurs différentes

par Vikchill » 23 oct. 2006, 17:14

Je dirais que $a c'est la partie entière et que $b c'est ta valeur de départ moins $a, donc un petit intval devrait le faire.

par Ajoloca » 23 oct. 2006, 16:53

Bonjour,

Personnellement je ne connais pas. Mais tu peux écrire un code qui te le face
$total = 8.4848;
// Séparation des deux parties
$temp = explode(".", $total);
// Récupération des parties séparées
list($int, $dec) = $temp;
echo $int . ' - ' . $dec; // Affiche 8 - 4848

Opération sur une chaine de caractère

par zepretender » 23 oct. 2006, 16:40

Bonjour,

Quand je fais une opération, j'aimerai récupérer dans deux variables :

- le chiffre entier avant la virgule
- les chiffres après la virgule

La virgule étant un "." (ex : 8.4848) je souhaite convertir ça en
$a = 8
$b = 4848

Existe-t-il quelque chose qui fait ça automatiquement ?

Merci