Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme de decimale

3 réponses
Avatar
S. Pau
Bonjour,

J'ai fait un script qui doit me permettre de savoir si un nombre possède 2
ou plus de décimal.
Le problème est que cela ne fonctionne pas sur certains nombres.
Par exemple, il fonctionne bien pour 27,90 mais pas pour 19,90...
Si qqn a une solution ou un autre script tout pret, je suis preneur.

Voici le script et les sorties générées:
<?php
function arrondi($nombre)
{
echo '<br>arrondi '.round($nombre*pow(10, 2));
echo '<br>puiss '.$nombre*pow(10, 2);
if ( round($nombre*pow(10, 2)) == $nombre*pow(10, 2) )
return true;
else
return false;
}

$nombre = 19.90;

if (arrondi($nombre))
echo '<br>'.$nombre.' arrondi et puiss &eacute;gaux';
else
echo '<br>'.$nombre." arrondi et puiss diff&eacute;rents";

$nombre = 27.9;
if (arrondi($nombre))
echo '<br>'.$nombre.' arrondi et puiss &eacute;gaux';
else
echo '<br>'.$nombre." arrondi et puiss diff&eacute;rents";

$nombre = 19.901;
if (arrondi($nombre))
echo '<br>'.$nombre.' arrondi et puiss &eacute;gaux';
else
echo '<br>'.$nombre." arrondi et puiss diff&eacute;rents";
?>

arrondi 1990
puiss 1990
19.9 arrondi et puiss différents //<-pb d'après le script, on a donc : 1990
différent de 1990 !!!!!!!!!!!!!!!!!!!

arrondi 2790
puiss 2790
27.9 arrondi et puiss égaux

arrondi 1990
puiss 1990.1
19.901 arrondi et puiss différents

3 réponses

Avatar
dominique
S. Pau wrote:
if ( round($nombre*pow(10, 2)) == $nombre*pow(10, 2) )


Ca ne serait pas plutot ca le test que tu veux faire ?
if ( round($nombre, 2)*pow(10, 2) == $nombre*pow(10, 2) )
^^^^^^^^^^^^^^^^

--
Dom

Avatar
Serge
Le 27 Aug 2003 09:43:30 GMT, "S. Pau" a

Bonjour,

J'ai fait un script qui doit me permettre de savoir si un nombre possède 2
ou plus de décimal.
Le problème est que cela ne fonctionne pas sur certains nombres.
Par exemple, il fonctionne bien pour 27,90 mais pas pour 19,90...
Si qqn a une solution ou un autre script tout pret, je suis preneur.

Voici le script et les sorties générées:
<?php
function arrondi($nombre)
{
echo '<br>arrondi '.round($nombre*pow(10, 2));
echo '<br>puiss '.$nombre*pow(10, 2);
if ( round($nombre*pow(10, 2)) == $nombre*pow(10, 2) )
...


As-tu essayé floor à la place de round ?
(Floor -- Arrondi à l'entier inférieur)

- Serge -

Avatar
dominique
dominique wrote:
Ca ne serait pas plutot ca le test que tu veux faire ?
if ( round($nombre, 2)*pow(10, 2) == $nombre*pow(10, 2) )


en fait je pense que tu peux meme faire :
if (round($nombre, 2) == $nombre)
--
Dom