La comparaison décimale échoue dans JavaScript

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))