2013-08-07 4 views
0

Pls рассматривает вычисления в javascript-коде ниже. С примерами значений:error javascript code code

  • investmentfix = 200,00
  • investmentvar = 123.12
  • nrofparts = 5,00

... консоль показывает странное значение результата 0200.00615.6. которые я не понимаю. Я заметил значения 200.00 и 615.6, - последний результат investmentvar * nrofparts - в этом значении результата. Но я бы ожидать (и цели получить) результат 815,6 (200 + (123.12 * 5,00)

Что идет не так ли относится к своему роду проблема формата это

Javascript код:.?

var result =0; 

result += (investmentfix + (investmentvar * nrofparts)); 

console.log(result); 
+4

Некоторые из ваших переменных строк? Возможно, он пытается конкатрировать, а не добавлять их. –

+0

можно ли увидеть еще какой-нибудь код? – imulsion

+0

^^ Они были бы строками, если бы они поступали напрямую с пользовательских входов. –

ответ

1

Попробуйте следующее:.

result = parseFloat(0,10); 
result+=parseFloat(investmendfix,10)+parseFloat(investmentvar*nrofparts,10); 
console.log(result); 

Это гарантирует, что двигатель JavaScript анализирует переменные в числах вместо строк

parseFloat() синтаксис: parseFloat(myNumber,base);

+1

execllent, он работает; thnx для всех ваших комментариев (!) Сначала я использовал только parseFloat для отдельных параметров при получении значений из полей формы. Но, похоже, решение Джеффа показало, что еще нужно применять parseFloat для вычисления. – Joppo

+0

Все будет работать по назначению без необходимости 'parseFloat()', если переменные не будут содержать строки. @ user2543182 Вы можете найти, какая переменная является строкой, используя 'typeof (myVariable) == number'. Если он возвращает true, переменная представляет собой число, в противном случае она содержит другой тип значения: 'string',' Object', 'Array' и т. Д. Поиск какой переменной не является строкой, может помешать использованию' parseFloat () 'трижды. –