23.09.2015, 10:56
|
Новичок на форуме
|
|
Регистрация: 23.09.2015
Сообщений: 2
|
|
Написать крутую формулу с If else. С меня печеньки!
Прежде всего, отмечу, что я не знаю толком язык Java, но движок моего сайта на Bitrix, а в нем, для математических вычислений используется Java.
Я уже использовал math.pow и еще что-то, но всё это для простетских формул =)
Хочу написать серьезную формулу, но не знаю, как точно это сделать. Поэтому прошу помощи у вас!
Знатоки, внимание вопрос!
Мне нужно написать формулу с использованием IF и вроде бы Else
Суть такова:
Если (х*у/10000) меньше чем 0.1, ТО (х*у/10000) равно 0.1*(a*b)
Если (х*у/10000) больше 0.1 то тогда (х*у/10000)*(a*b)
Всё нужно прописать в одну строчку, ибо больше строчек нет. Я в неведении, как это сделать :(
|
|
23.09.2015, 11:28
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
Цитата:
|
что я не знаю толком язык Java
|
я тоже.
Цитата:
|
математических вычислений используется Java.
|
круто!
Могу вас разочаровать, данный проект посвящен JavaScript, не Java.
Цитата:
|
Я в неведении, как это сделать
|
Через 10 минут чтения, мой кот написал скрипт, пока я делал кофе.
Вы, думаю, за 5 справитесь.
http://learn.javascript.ru/ifelse
|
|
23.09.2015, 11:36
|
Новичок на форуме
|
|
Регистрация: 23.09.2015
Сообщений: 2
|
|
А теперь представьте ситуацию, что вы заходите в магазин какой-нибудь специализированной техники и пытаетесь узнать то, что не знаете совершенно. А продавец, пользуясь своим преимуществом, отвечает на ваши вопросы саркастически и язвительно. Не приятная ситуация..
Если вы знаете в какой то области больше чем другие, это не значит, что вы можете вести себя как мудак, господин Lemme
|
|
23.09.2015, 11:53
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
Цитата:
|
А продавец, пользуясь своим преимуществом, отвечает на ваши вопросы саркастически и язвительно
|
Вы почему-то сравниваете меня с продавцом, хотя я такой же "зашедший в магазин", как и вы. Различие лишь в том, что я знаю больше.
А за время написания этого поста, вы могли бы посетить ссылку, которую я вам скинул и написать это:
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);
|
|
23.09.2015, 13:15
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Lemme,
дважды вычислять одно и тоже не стоит.
var result = (с = х*у/10000) < 0.1 ? 0.1 * a * b : с * a * b;
|
|
23.09.2015, 13:37
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
laimas, не знал о таком=) Спасибо.
|
|
23.09.2015, 13:43
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от laimas
|
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);
|
|
23.09.2015, 13:50
|
Кандидат Javascript-наук
|
|
Регистрация: 19.09.2015
Сообщений: 117
|
|
Сообщение от devote
|
Во вторых переменная c у вас не объявлена и будет создана в глобальном пространстве
|
Она в любом случае будет там создана.
Сообщение от devote
|
В данном случае это никак не повлияет на производительность
|
никак -- это неверное слово. Незначительно.
|
|
23.09.2015, 13:58
|
Профессор
|
|
Регистрация: 23.09.2014
Сообщений: 197
|
|
function f(x, y, a, b){
return (x * y / 10000 < 0.1 && 0.1 * (a * b)) || (x*y/10000) * (a*b);
}
|
|
23.09.2015, 14:21
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от devote
|
Так писать тоже не стоит, во первых код плохо читаем.
|
Что в нем трудно читаемого?
Сообщение от devote
|
Во вторых переменная c у вас не объявлена и будет создана в глобальном пространстве.
|
И что?
Сообщение от devote
|
В третьих зачем вы убрали скобки приоритета?
|
Хотите сказать что 2 * 3 * 4 и 2 * (3 * 4) дадут разный результат?
Сообщение от devote
|
В четвертых почему по вашему не стоит вычислять одно и тоже дважды? В данном случае это никак не повлияет на производительность, да и читаемость никуда не исчезнет.
|
А зачем?
PS. Если вас лично беспокоит глобальность, ну так кто мешает
var c, result = (с = х*у/10000) < 0.1 ? 0.1 * a * b : с * a * b;
Последний раз редактировалось laimas, 23.09.2015 в 14:42.
|
|
|
|