06.03.2017, 05:23
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Как засунуть в цикл?
if (plosh <= 3) {var koef = 1}
else if (plosh <= 3.3) {var koef = 0.98}
else if (plosh <= 3.6) {var koef = 0.97}
else if (plosh <= 4.0) {var koef = 0.96}
else if (plosh <= 4.3) {var koef = 0.95}
else if (plosh <= 4.6) {var koef = 0.94}
else if (plosh <= 5.0) {var koef = 0.93}
итд
подскажите плиз! как сократить
|
|
06.03.2017, 07:58
|
Кандидат Javascript-наук
|
|
Регистрация: 21.01.2017
Сообщений: 139
|
|
Лучше написать формулу и вычислять по ней
var koef = (1 - (plosh - 3) / 33).toPrecision(2);
|
|
06.03.2017, 08:47
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
j0hnik,
<script>
function fn(plosh)
{ var koef = 1;
for (var i=0,k = 3; k < plosh; i++) {
k += (i + 1)% 3 ? .3 : .4;
k = +k.toFixed(1)
koef -= i ? 0.01 : 0.02 ;
koef = +koef.toFixed(2)
}
return koef
}
var test = [3,3.3,3.6,4,4.3,4.6,5,5.3];
function foo(plosh)
{
var koef = (1 - (plosh - 3) / 33).toPrecision(2);
return +koef
}
for (var i=0; i<test.length; i++) {
var plosh = test[i];
document.write([plosh.toFixed(1),fn(plosh),foo(plosh) ].join(" = ")+"<br>")
}
document.write("<br>");
for (var i=0; i<test.length; i++) {
var plosh = test[i]+.1;
document.write([plosh.toFixed(1),fn(plosh),foo(plosh) ].join(" = ")+"<br>")
}
</script>
Последний раз редактировалось рони, 06.03.2017 в 08:53.
|
|
06.03.2017, 08:56
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от j0hnik
|
Как засунуть в цикл?
|
Как вариант...
var a=[
{plosh: 3, koef: 1},
{plosh: 3.3, koef: 0.98},
{plosh: 3.6, koef: 0.97},
{plosh: 4.0, koef: 0.96},
{plosh: 4.3, koef: 0.95},
{plosh: 4.6, koef: 0.94},
{plosh: 5.0, koef: 0.93}
];
var plosh=4;
for (var i=0; i<a.length; i++) {
if (plosh<=a[i].plosh) {
var koef=a[i].koef;
break;
};
};
alert(koef);
|
|
06.03.2017, 09:17
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
ksa,
если plosh = 20?
|
|
06.03.2017, 09:43
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от рони
|
если plosh = 20?
|
Это вопрос к ТСу...
У него такие варианты не обрабатываются в примере...
|
|
06.03.2017, 09:51
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от ksa
|
У него такие варианты не обрабатываются в примере...
|
Сообщение от j0hnik
|
else if (plosh <= 5.0) {var koef = 0.93} итд
|
|
|
06.03.2017, 12:10
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от Diphenyl Oxalate
|
Лучше написать формулу и вычислять по ней
|
совершенно верно
1. Берешь свои точки, строишь по ним график функции (см. вложение).
2. Убеждаешься, что на интервале от >=3.3 х график, по сути, представляет из себя прямую.
3. Находишь уравнение прямой по двум точкам,
4. Получившееся уравнение заворачиваешь в функцию:
function foo(x) {
return -0.03266666666666666*x+1.09
}
при этом не забываешь дописать условие для plosh <= 3 (я этого не далал)
5. используешь эту функцию
function foo(x) {
return -0.03266666666666666*x+1.09
}
alert(foo(3.3)) // 0.98
alert(foo(3.6)) // 0.97
alert(foo(4.0)) // 0.96
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 06.03.2017 в 12:12.
|
|
06.03.2017, 16:22
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Спасибо всем =))) столько ответов.
|
|
06.03.2017, 16:35
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от j0hnik
|
столько ответов
|
Мы народ легкий, заводной! (с)
|
|
|
|