Jquery - странное число в строковое преобразование - PullRequest
0 голосов
/ 11 ноября 2011

Я сталкиваюсь со странным нежелательным преобразованием Number в NaN, не зная, где и почему. Я явно что-то здесь упускаю, но не могу понять, что.

Любое предложение приветствуется! ;)

Вот код JavaScript:

updatedAbsoluteResult = currentlyDisplayedRentability * investment
resultAgainstReferencial = updatedAbsoluteResult - appropriateReferencialRentability * investment

$('#a0').html('currentlyDisplayedRentability: ' + typeof currentlyDisplayedRentability)
$('#a1').html('investment: ' + typeof investment)
$('#a2').html('updatedAbsoluteResult: ' + typeof updatedAbsoluteResult)
$('#a3').html('appropriateReferencialRentability: ' + typeof appropriateReferencialRentability)
$('#a4').html('resultAgainstReferencial: ' + typeof resultAgainstReferencial )
$('#a5').html('resultAgainstReferencial: ' + resultAgainstReferencial )

Вот вывод HTML:

currentlyDisplayedRentability: number
investment: number
updatedAbsoluteResult: number
appropriateReferencialRentability: number
resultAgainstReferencial: number
resultAgainstReferencial: NaN

Все относится к числовому типу, но когда я хочу вернуть конечный результат, в результате я получаю «не число». Кто-нибудь знает почему?

Приятных выходных!

Ответы [ 4 ]

2 голосов
/ 11 ноября 2011

Числовой тип может возвращать NaN и при этом иметь числовой тип.Проверьте значения updatedAbsoluteResult, соответствующимReferencialRentability и инвестиций, чтобы увидеть, являются ли какие-либо из них неожиданными значениями.Вероятно, что-то в этом уравнении пошло не так.

1 голос
/ 11 ноября 2011

Вероятно, проблема в том, что resultAgainstReferencial равен NaN.Вы получаете результаты, потому что:

typeof NaN == "number"

Чтобы показать вам:

resultAgainstReferencial = NaN;
alert(typeof resultAgainstReferencial);   // alerts "number"

Вы даже можете увидеть это здесь: http://jsfiddle.net/jfriend00/t3ubg/

Итак, где-товверх по течению, вы пытаетесь сделать математику с вещами, которые не являются числами.Вам нужно будет посмотреть на значения всех числовых входов и посмотреть, куда пошли данные.

0 голосов
/ 11 ноября 2011

Возможно, по иронии судьбы, NaN сам по себе Number.

Возможно, у вас где-то произошел неудачный вызов parseInt() или множество других возможностей.Трудно догадаться, не увидев соответствующий код.

0 голосов
/ 11 ноября 2011

NaN в javascript технически все еще имеет тип number. Обычно это вызвано делением на 0. Выполнение любых математических вычислений для другого NaN также вернет NaN.

...