| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Арифметическое сложение |
| Автор: GIK 4.6.2005, 11:19 | ||
| Как сделать так чтобы числа складывались арифметически, а не "сливались" в одно число. Краткое описание программы: Пользователем вводится число, это число при некотором условии складывается с другим, определенным, числом, через определенный промежуток времени. Итог помещается во вторую строку. И так далее до максимального числа.
Добавлено @ 11:22 Ребята. если вы меня слышите. ИЛЬ, спасибо за моральную поддержку. На ты со мной нужно. Aliance извини за неправильный вход в форум. Просто я не сразу не врубился как входить зарегистрированным. |
| Автор: sergejzr 4.6.2005, 11:29 |
| http://vingrad.ru/JAVASCRIPT-JS-001953 PS: Пожалуйста, пользуйтесь тэгами "Код". |
| Автор: GIK 4.6.2005, 13:54 |
| Мне нужно преобразовать вводимы числа в number num1=Number(k); где num1 заменяется "k" в if (k<10) и т.д. |
| Автор: sergejzr 4.6.2005, 14:03 | ||
Ээээ. Там же всё написано...
|
| Автор: o.s.a. 4.6.2005, 16:12 |
| GIK, у меня была однажды такая же проблема Для ее решения мне пришлось всего лишь почитать учебник |
| Автор: Aliance 5.6.2005, 21:01 | ||||
| Итак, немного о базовом JS. В ЯваСкрипте существует определенное кол-во операторов, их условно можно поделить на три группы: унарные, бинарные и тернарные. Т.е. операторы, состоящие из 1, 2 и, соответственно, 3 операторов. Для ясности приведу примеры:
Оператор «плюс» является одним из самый сложных, т.к. он выполняет роль сразу нескольких операторов:
Теперь, не отходя от темы коснусь проблемы, которая попалась тебе. Создавая выражения JavaScript, необходимо обращать особое внимание на типы данных. Т.к. различие в типах могут приводить к неожиданным последствиям, как это было в этом примере. При сложении чисел, необходимо убедиться, что оба операнда имеют численный тип данных или могут быть приведены к ним. Если оператору «плюс» переданы одна строка и одно число, он преобразует число в строку и пытается выполнить контектацию, таим образом получается так:
Оператор сам пытается (если это возможно) сделать перевод типов данных, но строчным имеет прерогативу над числовым. Соответственно, для получения необходимого результата нужно вручную перевести тип в необходимый:
|
| Автор: GIK 6.6.2005, 13:02 | ||||
| Aliance спасибо что не заставил меня лезть в учебник. Вопрос. Можно ли создать оператором переменную и присвоить ей ТИП "номер" и только потом присвойть значение? Будет ли это значение иметь ТИП-обычное число, которое можно складывать перемножать и т.д.?
|
| Автор: sergejzr 6.6.2005, 13:08 | ||
Пожалуйста, пользуйтесь тэгами "Код"!!! Ужо просил ведь А учебники всё равно не помешает почитать |
| Автор: GIK 6.6.2005, 13:39 |
| Спасибо. А как теперь сделать, чтобы числа в полях изменялись по истечении времени, и что значит "Здесь не надо переводить число в строку это будет сделано автоматически"? |
| Автор: sergejzr 6.6.2005, 13:53 |
| По истечении времени у тебя вызывается функция func(), которая не определена в коде!! Держу пари, ты просто ошибся регистром теперь про типы: Вот смотри если я пишу: var X="1234"; var Y=1234; Эти две переменные не равны!! Потгому что X - слово, а Y - цифра. Если ты пытаешься сложить их, компьютер страратся привести обе к одному общему виду. Слово не всегда можно сделать числом, а наоборот можно! Поэтому компьютер приводит обе переменные в строку и "складывает" то есть X+Y будет "12341234" Для того, чтобы он сложил два числа, необходимо привести обе переменные к типу "число" поэтому мы делаем так: parseInt(X)+Y теперь будет 2468. Однако перевести число в строку компьютер может и без нашего напоминания. |
| Автор: GIK 6.6.2005, 13:59 |
| Теперь понял. СПАСИБО. |
| Автор: Aliance 6.6.2005, 16:59 | ||||
Да. Например так:
Добавлено @ 17:03 Кстати, sergej.z, лучше не использовать ParseInt(), т.к. скажем если мы будемобрабатывать строку 2a в число - то она превратиться в число 2, т.е. потеряется и суть, и не будет сказано об ошибке |
| Автор: o.s.a. 6.6.2005, 17:03 | ||
так ведь
это же тоже самое |
| Автор: Aliance 6.6.2005, 17:09 |
| o.s.a. угу, но тут было задан конкретный вопрос, т.к. иногда (лично у самого была такая ситуация) возникают такие ситуации, что необходимо явно указывать тип данных. Хотя для JavaScript это не характерно, т.к. он не является типизированным, как скажем Pascal. |
| Автор: sergejzr 6.6.2005, 17:13 | ||
Ну в данном коде это не играет большой роли. Проблема состояла не в выборе функции, а впонимании, зачем это делать. parseInt() содержит в своём названии указание на способ работы, поэтому её и взял o.s.a., прочитайте пожалуйста ещё раз условия задачи и мой предидущий пост. не всегда у нас числа. Очень часто и строки тоже, которые нам надо преобразовать. |
| Автор: o.s.a. 6.6.2005, 17:15 | ||||
Что за ситуация такая, когда
не подходит ??? Добавлено @ 17:21 sergej.z все понятно P.S. из твоего же поста: если скалдывать не X+Y, a Y+X получится как раз число (просто нужно саму четко отслужывать типы данных |
| Автор: Aliance 6.6.2005, 17:24 |
| А когда нам нужно получить число из аргумент, нам же нужно его как-то профильтровать? А когда мы берем данные из формы - кто знает что введет юзер в них... И т.п... |
| Автор: sergejzr 6.6.2005, 17:34 | ||
Вряд ли Общий знаменатель у обеих переменных - строка. Именно к ней и приведётся. |
| Автор: GIK 7.6.2005, 08:10 | ||||
| Ребят, я нашел еще один способ, который на мой взгляд проще. Нужно просто умножить на еденицу любую переменную. Если данный способ с чем то сопрежен сообщите пожалуста.
|
| Автор: Sardar 8.6.2005, 00:26 | ||
GIK чем не подходит:
Или непременно хотим пистать оригинально ? |