Éviter les problèmes avec le JavaScript est bizarre décimal calculs

Je il suffit de lire sur MDN que l'une des bizarreries de JS de la gestion des numéros en raison de tout ce qui se "double précision 64 bits format IEEE 754 valeurs" est que lorsque vous faites quelque chose comme .2 + .1 vous obtenez 0.30000000000000004 (c'est ce que l'article se lit, mais j'ai 0.29999999999999993 dans Firefox). Donc:

(.2 + .1) * 10 == 3

évalue à false.

Cela semble comme il serait très problématique. Donc, ce qui peut être fait pour éviter des bugs en raison de la imprécis décimal calculs en JS?

J'ai remarqué que si vous ne 1.2 + 1.1 vous obtenez la bonne réponse. Alors, faut-il juste d'éviter toute forme de maths qui implique des valeurs inférieures à 1? Parce que cela semble très peu pratique. Existe-il d'autres dangers à faire des maths en JS?

Edit:

Je comprends que beaucoup de fractions décimales ne peuvent pas être stockées sous forme binaire, mais la façon dont la plupart des autres langues que j'ai rencontrés semblent traiter l'erreur (comme JS gère les nombres plus grand que 1) semble plus intuitif, donc je ne suis pas habitué à cela, et c'est pourquoi je veux voir comment d'autres programmeurs pour faire face à ces calculs.

  • Les nombres à virgule flottante près de jamais parfaitement comparer à d'autres numéros, dans n'importe quelle langue.
  • L'arrondissement est votre ami.
  • Donc, vous devez multiplier le tout par une puissance de 10, puis arrondir à l'entier le plus proche?
  • PHP, MySQL, Perl, VB, et la plupart des langues que j'ai utilisé dans le passé n'ont jamais eu aucun problème avec ces types de calculs.
  • $ php -r 'var_dump((0.1 + 0.2) * 10 == 3);'bool(false) 🙂
  • Je corrige la position des mains. Je n'ai jamais remarqué ça avant.