В JavaScript, я должен вызвать parseFloat для преобразования строк в числа с плавающей запятой, или я должен позволить JavaScript преобразовать их? - PullRequest
1 голос
/ 23 апреля 2011

Я пишу некоторый JavaScript, который принимает числовые входные данные из текстовых полей и проводит их через некоторые уравнения.Эти уравнения используют умножение, вычитание, сложение, деление и показатели степени.Пока что все тесты показывают, что JavaScript преобразует числовые текстовые вводы (строка типа) в число типа и правильно вычисляет результаты уравнения.Должен ли я продолжать доверять JavaScript, чтобы неявно преобразовывать входные значения из строки типа в число типа, или мне следует явно преобразовывать каждое входное значение с помощью parseFloat ()?

Заранее благодарим за любые предоставленные советы или советы!

РЕДАКТИРОВАТЬ: Чтобы уточнить, я беру ввод, проверяя, чтобы убедиться, что это целое число.Если входное значение не является целым числом, отображается предупреждение, и никакие вычисления не выполняются.Если входное значение является целым числом, то оно выполняется через уравнение, в котором входное значение немедленно умножается (значение 0,01 *) или применяется показатель степени (Math.pow (значение, 2)).Это делается дважды для двух отдельных входов.Другое уравнение берет результаты первых двух уравнений и сразу делит их (0,5 / значение).Учитывая эти операции, безопасно ли неявное преобразование?

Ответы [ 3 ]

3 голосов
/ 23 апреля 2011

Неявное их преобразование будет иметь тот же эффект, что и использование parseFloat, за исключением случаев, когда строка содержит символы, где parseFloat игнорирует символы после float.ie.

(+"12.5") == parseFloat("12.5"); // true

и

isNaN(+"a12.5") == true;
isNaN(parseFloat("a12.5")) == true;

однако

(+"12.5s"); // is NaN but
parseFloat("12.5s") == 12.5;

Так что это будет зависеть от того, какие типы входов вы принимаете.

3 голосов
/ 23 апреля 2011

Явное. Не уверен, что вы видите, но на самом деле это не работает

var a = "1";
var b = 2;

a + b  = "12"
b + a = "21"
2 голосов
/ 23 апреля 2011

Если вы не используете parseFloat () явно, ваши строки могут оставаться строками после точки ввода и случайно использоваться как строки в некоторый момент позже в вашем коде, что приводит к объединению или другой случайной строковой операции.

Кроме того, если ваш вход неправильно сформирован, parseFloat () вернет NaN, который вы можете проверить.

Если вы ожидаете float, используйте parseFloat ().

...