Действие Сценарий строка в номер - PullRequest
4 голосов
/ 27 января 2012

У меня проблема со следующим утверждением

trace(Number("1/2")) //output NaN

но

trace(Number("1.2")) //output 1.2

Итак, я немного запутался, почему первое утверждение не дает правильного результата?

Ответы [ 3 ]

12 голосов
/ 27 января 2012

Вероятно, ожидается, что значение уже будет числом, а не вычислением. Попробуйте разобрать эту строку: "1+2". Скорее всего, это также приведет к NaN.


Редактировать: я запустил тест

Number("1.2") = 1.2
Number("1+2") = NaN
Number("1/2") = NaN

Итак, как я уже сказал, конструктор Number() ожидает число, а не вычисление.

1 голос
/ 27 января 2012

Вы можете преобразовать строки, состоящие из числовых символов, в фактические числовые данные, используя Number (). Это работает так, что вы передаете значение String в Number (), и, в свою очередь, это создаст версию Number строки String, которая была ему передана.

    trace(Number("1")/Number("2"));     // Output 0.5

NaN - это вывод, потому что вы пытаетесь преобразовать строковые данные для использования в качестве числовых данных.

Вы должны отслеживать это, потому что оператор "/" не является числом. Вы можете только умножать или делить числа, а не строки. Таким образом, пытаясь разделить строковые данные, мы неявно приводим значения к изменению в числовые данные. Мы не можем этого сделать. Мы должны явно преобразовать данные String в данные Number, а затем выполнить арифметическую операцию.

0 голосов
/ 27 января 2012

Заключая значение в парки цитат, вы делаете его явной строкой.Это все равно, что спросить, каково числовое значение слова «это».

Не уверен, помогает ли это, но удаляет кавычки, и это имеет смысл.

trace(Number(1/2)); //output 0.5
...