Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   alert( (5-5)/(5-5) ) КАК посчитать такое выражение одной строкой? (https://javascript.ru/forum/misc/24010-alert-5-5-5-5-kak-poschitat-takoe-vyrazhenie-odnojj-strokojj.html)

Livanderiaamarum 15.12.2011 00:29

alert( (5-5)/(5-5) ) КАК посчитать такое выражение одной строкой?
 
оператор скобки возвращает не infinity NAN и вычисления прекращаются.

dmitriymar 15.12.2011 00:36

var a=0/0;
alert(a);
alert(typeof(a));
a=1/0;
alert(a);
alert(typeof(a));

особенности интерпритатора

Livanderiaamarum 15.12.2011 00:42

Цитата:

Сообщение от dmitriymar (Сообщение 142963)
var a=0/0;
alert(a);
alert(typeof(a));
a=1/0;
alert(a);
alert(typeof(a));

особенности интерпритатора

точно, спасибо, а я подумал что 0/0 будет бесконечность.

trikadin 15.12.2011 00:43

Цитата:

Сообщение от Livanderiaamarum
операторы арифметики могут (ли) работать со строковым значением если это строка равна "infinity" при этом не делать коннактацию?

Что помешало проверить? И какие арифметические действия вы будете производить с бесконечностью?)

a=1/0;
alert(typeof(a));
a+="";
alert(typeof(a))
a= +a;
alert(typeof(a))
alert(a);

dmitriymar 15.12.2011 00:43

Цитата:

Сообщение от Livanderiaamarum
это строка равна "infinity" при этом не делать коннактацию?

var a =1/0;
var b=3;
var c=a+b;
var d=b+a;
alert(a);
alert(c);
alert(typeof(c));
alert(d);
alert(typeof(d));

trikadin 15.12.2011 00:44

dmitriymar, успел на секунду быстрее, буквально... И мне кажется, вы не совсем по теме ответили...

dmitriymar 15.12.2011 00:51

Цитата:

Сообщение от trikadin
И мне кажется, вы не совсем по теме ответили...

в принципе да не сделал сложение со строкой. но вроде его интересовало сложение бесконечности с числом. бесконечность+- число ===бесконечность

Livanderiaamarum 15.12.2011 00:53

я проверяю пересекает ли одна линия (розовая) определенный горизонтальный луч(голубой) (на высоте y)

x = (y-y1)/(y2-y1)*(x2-x1) + x1

вернее проверяю на каком x эта линия пересечет высоту y
линия строится по двум точкам.
x1 y1 - первая
x2 y2 - вторая

Получается что если x = (y-y1)/(y2-y1)*(x2-x1) + x1
в этом выражении (y-y1)/(y2-y1) будет принимать форму типа
(5-5)/(5-5), соответственно 0/0 получается что линия наша просто параллельна лучу, и лежит на нем?

для наглядности:

trikadin 15.12.2011 00:59

Цитата:

Сообщение от Livanderiaamarum
а когда нет. в таком случае чтобы все записать одной строкой нужно использовать тернатный оператор)?

Можно.

А ещё можно не одной строкой. Вас за это никто не побьёт.

with-love-from-siberia 15.12.2011 01:04

Цитата:

Сообщение от dmitriymar
особенности интерпритатора

неправда ваша.
Цитата:

Сообщение от Livanderiaamarum
возвращает не infinity ,а NAN

Это логично. 0 / 0 - это неопределенность, которая не может быть представлена конечным или бесконечным числом, поэтому в языке обозначается - NAN. Просто отлавливайте такие ситуации.

Livanderiaamarum 15.12.2011 01:04

Цитата:

Сообщение от trikadin (Сообщение 142976)
Можно.

А ещё можно не одной строкой. Вас за это никто не побьёт.

а разве одним выражением не быстрее?

блин да, вы правы, я черт возьми прямо осветление какое-то почувствовал.. освобождение.! у меня был адский заеб не создавать переменных, делать максимально короткие пути поиска интерпритатором ременных в прототипах. это сильно ухучшало скорость разработки. щас я действительно понял что НУЖНО ВНАЧАЛЕ СДЕЛАТЬ ЧТОБЫ РАБОТАЛО, а потом уже оптимизировать.
да и к тому же такая дикая оптимизация иногда совсем не к месту и не нужна. но это происходило прямо таки автоматически у меня) щас я реально задумался над этим. и решил не сокращать код а писать максимально развернуто и понятно. спасибо вам большое)

trikadin 15.12.2011 01:12

Цитата:

Сообщение от Livanderiaamarum
а разве одним выражением не быстрее?

А это как составить)

dmitriymar 15.12.2011 01:18

Цитата:

Сообщение от Livanderiaamarum
x = (y-y1)/(y2-y1)*(x2-x1) + x1

кстати эта формула будет работать 50 на 50.учитывая что операции с числами типа float иногда /часто дают результат не точный а приближенный.
пример эфемерный но степень приближения примерно такая:
0.35+0.65=0.99

Livanderiaamarum 15.12.2011 01:19

Цитата:

Сообщение от with-love-from-siberia (Сообщение 142978)
неправда ваша.

Это логично. 0 / 0 - это неопределенность, которая не может быть представлена конечным или бесконечным числом, поэтому в языке обозначается - NAN. Просто отлавливайте такие ситуации.

200 / 0 тоже неопределенность либо бесконечность либо само делимое число. почему тут получается бесконечность в таком случае если это не особенности интеерптитатора?

Livanderiaamarum 15.12.2011 01:21

Цитата:

Сообщение от dmitriymar (Сообщение 142985)
кстати эта формула будет работать 50 на 50.учитывая что операции с числами типа float иногда /часто дают результат не точный а приближенный.
пример эфемерный но степень приближения примерно такая:
0.35+0.65=0.99

это как-то реализованно в видеокартах же аппаратно? не знаете как)? оч интересно.

а все, придумал))! тут мне не нужно ТОЧНО знать в каком месте розовая линия пересекает мой голубой луч! мне нужно знать пересекает ли она его ДАЛЬШЕ определеннго места, или пересекает ближе этого места))



это все для определения принадлежности точки многоугольнику. делаю трассировку луча, щас пишу функцию которая будет определять тип найденных лучем граней, типа прилежащие, пересекающие и нейтральные. ))

ну вот. это типа пересекающий. тока небычный) просто в таком случае буду смотреть СНАЧАЛА на одной ли высоте пущен мой луч и на одной ли с ним высоте пущена проверяемая линия. и при том ПАРАЛЛЕЛЬНЫ ЛИ ОНИ.. вот и все))

нужно вначале определять тип а потом уже работать с каждым типом граней по разному)
но все ровно всем спасибо ОГРОМНОЕ!

trikadin 15.12.2011 01:25

Цитата:

Сообщение от dmitriymar
кстати эта формула будет работать 50 на 50.учитывая что операции с числами типа float иногда /часто дают результат не точный а приближенный.
пример эфемерный но степень приближения примерно такая:
0.35+0.65=0.99

Пример:

alert(0.2+0.1)

Livanderiaamarum 15.12.2011 01:30

Цитата:

Сообщение от trikadin (Сообщение 142989)
Пример:

alert(0.2+0.1)

почему не сделать систему автоматически выбирающую систему счисления?

with-love-from-siberia 15.12.2011 01:35

Livanderiaamarum,
200 / 0 - это "элементарная" бесконечность. Отвлекитесь от своей задачи и посмотрите с другой стороны. Вот Ваше выражение, по которому Вы считаете абсциссу точки:
x = (y-y1)/(y2-y1)*(x2-x1) + x1


А теперь преобразуйте ее к виду:
Код:

(x-x1)/(x2-x1) = (y-y1)/(y2-y1)
Подставьте реальные значения:
Код:

(x-1)/(5-1) = (5-5)/(5-5)
Вы же не хотите сказать, что любое число будет равно... Чему - нулю, бесконечности?

Livanderiaamarum 15.12.2011 01:37

Я тут подума, если я хочу определить принадлежность точки полигону то нужно вот что сделать. во первых я не могу симулировать идеальное пространство. для такого копьютера не хватит всех атомов во вселенной. я не могу записать формулой.. я не могу использовать фракталы из-за погрешности. но тут вот дело в чем. где может использоваться принадлежность точки полигону? Правильно! ТОЛЬКО в восприятии человека! например к играх или интерфейсах или в физических движках (которые тоже имеют в настройках точность просчета)

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


или например пускать 10 лучей, и смотреть сколько граней они пересекут.. и сравнивать и.т.п. то есть я тут не правильный подход вначале использовал...

то есть нужно не ЭМУЛИРОВАТЬ результат, а СИМУЛИРОВАТЬ

melky 15.12.2011 01:39

Цитата:

Сообщение от Livanderiaamarum (Сообщение 142995)
Я тут подума...

http://ru.wikipedia.org/wiki/Зад...ольнику

на тебе вот кисточки, сиди и рисуй.

Livanderiaamarum 15.12.2011 01:40

Цитата:

Сообщение от melky (Сообщение 142998)
http://ru.wikipedia.org/wiki/Зад...ольнику

на тебе вот кисточки, сиди и рисуй.

правда думаешь что эта статья не первое что я прочитал после возникновения идеи написать такую функцию)?

melky 15.12.2011 01:44

ты мутишь чёрное дело в своём уютненьком редакторе, пытаясь превратить JS в Mathcad.

этим ты яро, бешено реализуешь велосипед, брызгая слюной от любого малейшего намёка в твою сторону на то, что твой ДжяваСкрипт хуже, чем у %developer_name%.

Livanderiaamarum 15.12.2011 01:47

Цитата:

Сообщение от melky (Сообщение 143004)
ты мутишь чёрное дело в своём уютненьком редакторе, пытаясь превратить JS в Mathcad.

этим ты яро, бешено реализуешь велосипед, брызгая слюной от любого малейшего намёка в твою сторону на то, что твой ДжяваСкрипт хуже, чем у %developer_name%.

ок


Часовой пояс GMT +3, время: 13:53.