J'ai besoin de comparer les scénarios suivants à l'aide de la comparaison décimale dans jquery.
var a=99999999999.99; var b=9999999999999999999 if(parseFloat(a).toFixed(2) > parseFloat(b).toFixed(2))
Cela revient toujours true
. Comment résoudre le problème?
Quelques sorties de ce que j'ai essayé:
parseFloat(9874563212).toFixed(2) > parseFloat(98745632).toFixed(2) true parseFloat(98745632).toFixed(2) > parseFloat(987456321).toFixed(2) false parseFloat(99999999999.99).toFixed(2) > parseFloat(9999999999999999999).toFixed(2) true parseFloat(99999999999.99).toFixed(2) > parseFloat(999999999999).toFixed(2) false parseFloat(99999999999.99).toFixed(2) > parseFloat(9999999999999).toFixed(2) false parseFloat(99999999999.99).toFixed(2) > parseFloat(99999999999999).toFixed(2) false parseFloat(99999999999.99).toFixed(2) > parseFloat(999999999999999).toFixed(2) false parseFloat(99999999999.99).toFixed(2) > parseFloat(9999999999999999).toFixed(2) true parseFloat(99999999999.99).toFixed(2) > parseFloat(1111111111111111).toFixed(2) true parseFloat(99999999999.99).toFixed(2) > parseFloat(111111111111111).toFixed(2) true
Vous comparez des chaînes, pas des nombres ( .toFixed()
renvoie une chaîne). Essayer:
if (parseFloat(parseFloat(a).toFixed(2)) > parseFloat(parseFloat(b).toFixed(2)))
Ou si a
et b
sont déjà des nombres, comme dans votre exemple
if (parseFloat(a.toFixed(2)) > parseFloat(b.toFixed(2)))
Ou mieux
if (Math.round(a * 100) > Math.round(b * 100))