Arrondi au centième de décimal le plus proche en JavaScript
Je suis en train de faire un simple calcul en JavaScript à l'aide de variables pour représenter les nombres.
Voici un exemple de mon code:
var ones = 0;
var fives = 0;
function results (){
_fives = (fives * 5);
var res = (_fives + ones);
document.innerHTML = res;
}
Ce n'est pas le code complet, mais, fondamentalement, je vais avoir à l'utilisateur d'entrer le montant des factures et des pièces de pièces de 1 cent jusqu'à 100 $de factures. Le code multiplie le montant des factures au montant de la facture vaut la peine. Ce n'est pas un problème fonctionne très bien...
Pour une quelconque raison sur certains de mes résultats, il montre un chiffre après la virgule comme 1.899999999997 pas sûr de savoir comment cela se passe.
Est-il un moyen de changer cela pour à tour au centième le plus proche d'un nombre décimal?
Par exemple, au lieu de lui montrer 1.89999999997 il suffit de montrer 1.90
en réalité, ce n'est pas un gros problème. C'est une chose personnelle que je peux tout autour de moi-même, cependant il serait bon de savoir comment faire pour référence future.
source d'informationauteur Spencer Carpenter
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR: MDN a fait un excellent exemple de décimal arrondi qui évite à virgule flottante inexactitudes. Leur méthode peut être modifié de façon à toujours ronde, sur la base de l'OP.
D'ORIGINE (UN PEU INCORRECT) RÉPONSE
MODIFIER: je n'ai pas lu la question complètement. Puisque nous parlons de la monnaie, nous voulons probablement autour d'elle:
En fait, cette méthode ne fonctionne PAS dans tous les cas. Je suis en train de faire quelque chose de similaire pour arrondir une valeur de mesure à un certain nombre de chiffres.
Dans mon cas, j'ai une moyenne et un écart-type de la mesure, quelque chose comme 0.20812345967 +/- 0.0031647859. Maintenant, évidemment, de l'extra chiffres significatifs ont pas de sens, donc je voudrais l'écrire comme 0.208 +/- 0.003. Quand je fais le calcul en virgule flottante, j'obtiens
0.20800000000000002 +/- 0.003
Généralement ce tours correctement, mais parce que la base de dix nombres décimaux parfois ne peuvent pas être exactement stocké en binaire, vous obtenez de la merde comme ça.
Au lieu de cela, je vais chercher une chaîne de caractères au format solution
Je sais que c'est susceptible un jour de retard et un dollar à court, mais j'étais également à la recherche de quelque chose de ce genre, et cette question m'a amené à regarder dans les Mathématiques.tour de la fonctionnalité
Je viens avec ce qui a permis de tours une valeur la plus proche de la 5e, 100e. Donc 0.07 devient de 0,05. 23h45 devient 23h45. 1006.32 devient 1006.30.
Étant un novice, je suis certain qu'il existe un moyen de rendre ce code plus efficace.