Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Написать крутую формулу с If else. С меня печеньки! (https://javascript.ru/forum/misc/58460-napisat-krutuyu-formulu-s-if-else-s-menya-pechenki.html)

Maikl_Rock 23.09.2015 10:56

Написать крутую формулу с If else. С меня печеньки!
 
Прежде всего, отмечу, что я не знаю толком язык Java, но движок моего сайта на Bitrix, а в нем, для математических вычислений используется Java.
Я уже использовал math.pow и еще что-то, но всё это для простетских формул =)
Хочу написать серьезную формулу, но не знаю, как точно это сделать. Поэтому прошу помощи у вас!
Знатоки, внимание вопрос!
Мне нужно написать формулу с использованием IF и вроде бы Else
Суть такова:

Если (х*у/10000) меньше чем 0.1, ТО (х*у/10000) равно 0.1*(a*b)
Если (х*у/10000) больше 0.1 то тогда (х*у/10000)*(a*b)

Всё нужно прописать в одну строчку, ибо больше строчек нет. Я в неведении, как это сделать :(

Lemme 23.09.2015 11:28

Цитата:

что я не знаю толком язык Java
я тоже.
Цитата:

математических вычислений используется Java.
круто!


Могу вас разочаровать, данный проект посвящен JavaScript, не Java.

Цитата:

Я в неведении, как это сделать
Через 10 минут чтения, мой кот написал скрипт, пока я делал кофе.
Вы, думаю, за 5 справитесь.

http://learn.javascript.ru/ifelse

Maikl_Rock 23.09.2015 11:36

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

Если вы знаете в какой то области больше чем другие, это не значит, что вы можете вести себя как мудак, господин Lemme

Lemme 23.09.2015 11:53

Цитата:

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

А за время написания этого поста, вы могли бы посетить ссылку, которую я вам скинул и написать это:

var result = 0;

if (х*у/10000 < 0.1) {
     result = 0.1*(a*b);
}
else {
     result = (x*y/10000) * (a*b);
}


А если бы почитали еще минут 5, то написали бы это:

var result = х*у/10000 < 0.1 ? 0.1*(a*b) : (x*y/10000) * (a*b);

laimas 23.09.2015 13:15

Lemme,
дважды вычислять одно и тоже не стоит.

var result = (с = х*у/10000) < 0.1 ? 0.1 * a * b : с * a * b;

Lemme 23.09.2015 13:37

laimas, не знал о таком=) Спасибо.

devote 23.09.2015 13:43

Цитата:

Сообщение от laimas (Сообщение 389566)
Lemme,
дважды вычислять одно и тоже не стоит.

var result = (с = х*у/10000) < 0.1 ? 0.1 * a * b : с * a * b;

Так писать тоже не стоит, во первых код плохо читаем. Во вторых переменная c у вас не объявлена и будет создана в глобальном пространстве. В третьих зачем вы убрали скобки приоритета? В четвертых почему по вашему не стоит вычислять одно и тоже дважды? В данном случае это никак не повлияет на производительность, да и читаемость никуда не исчезнет.
var с = х * у / 10000;
var result = с < 0.1 ? 0.1 * (a * b) : с * (a * b);

sortarray 23.09.2015 13:50

Цитата:

Сообщение от devote
Во вторых переменная c у вас не объявлена и будет создана в глобальном пространстве

Она в любом случае будет там создана.
Цитата:

Сообщение от devote
В данном случае это никак не повлияет на производительность

никак -- это неверное слово. Незначительно.

caetus 23.09.2015 13:58

function f(x, y, a, b){
 return (x * y / 10000 < 0.1 && 0.1 * (a * b)) || (x*y/10000) * (a*b);
}

laimas 23.09.2015 14:21

Цитата:

Сообщение от devote
Так писать тоже не стоит, во первых код плохо читаем.

Что в нем трудно читаемого?

Цитата:

Сообщение от devote
Во вторых переменная c у вас не объявлена и будет создана в глобальном пространстве.

И что?

Цитата:

Сообщение от devote
В третьих зачем вы убрали скобки приоритета?

Хотите сказать что 2 * 3 * 4 и 2 * (3 * 4) дадут разный результат?

Цитата:

Сообщение от devote
В четвертых почему по вашему не стоит вычислять одно и тоже дважды? В данном случае это никак не повлияет на производительность, да и читаемость никуда не исчезнет.

А зачем?

PS. Если вас лично беспокоит глобальность, ну так кто мешает
var c, result = (с = х*у/10000) < 0.1 ? 0.1 * a * b : с * a * b;


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