2017-01-16 2 views
-2

JavaScript:script java: 3 + 0 = 30

console.log('adding' + addThis + '+' + p1 +'=' + (addThis + p1));  

Console navigateur retourne: adding3+0=30

Im débogage une boucle qui interpole deux nombres. Cela fonctionne bien jusqu'à addThis (le montant qui doit être ajouté au nombre d'origine) est exactement 3 et p1 (la valeur d'origine) est 0. Chaque fois que la différence (addThis) n'a pas de décimales, un mauvais calcul se produit. Donc même problème:

adding6+0=60 ...or at.. 
adding9+0=90 

... tous les cas entre les deux fins de travail (par exemple, le rendement de la console: adding3.5999999999999996+0=3.59999999999999960)

dose il 'oublier' le point? Dose traiter ces valeurs comme des chaînes?

Je ne peux pas partager tout le code mais le problème doit être dans ce simple calcul, n'est-ce pas?

Merci beaucoup pour vos pensées et vos connaissances! ;)

+0

Il suffit de passer de (addThis + p1) à (p1 + addThis). La console retourne maintenant: l'addition3 + 0 = 03 ... ceci aide mais n'est pas encore joli et tout à fait fonctionnel. Les réponses aideraient encore beaucoup, merci! – Sebe

+1

Postez votre boucle. Nous devons voir d'où viennent les 'addThis' et' p1'. –

+0

_ "Je ne peux pas partager tout le code" _ Nous ne le voulons pas. Nous voulons vous présenter le [MCVE] avec lequel vous avez débogué ce problème au cours des derniers jours. –

Répondre

0

3 + 0 = 30. Il semble que ce doit être la chaîne (au moins toute variable est une chaîne). Vous pouvez revoir les lignes où ces valeurs de variable sont initialisées/modifiées. Sinon, vous pouvez utiliser comme ci-dessous:

addThis=Number(addThis); p1=Number(p1); 
console.log('adding' + addThis + '+' + p1 +'=' + (addThis + p1)); 
+0

Super! 'p1' est converti à partir d'une chaîne ... Je ne connaissais pas non plus la simple déclaration 'Number'. Si simple - mais si vous ne savez pas à ce sujet, vous ne pouvez pas le chercher haha ​​ Passez une bonne journée! – Sebe

+0

HaHaHa. Vous aussi, passez une bonne journée! :RÉ –

0

Si vous voulez convertir les chaînes en nombres entiers, vous pouvez utiliser le parseInt function:

addThis = '3' 
 
p1 = '0' 
 
console.log('adding' + addThis + '+' + p1 +'=' + (parseInt(addThis) + parseInt(p1)))

+0

Merci cela fonctionne. Mais les décimales se perdent. J'ai juste regardé comment fonctionne parseInt - super à savoir et utile mais j'ai besoin de ces décimales;) – Sebe