Как засунуть в цикл?
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}итд подскажите плиз! как сократить |
Лучше написать формулу и вычислять по ней
var koef = (1 - (plosh - 3) / 33).toPrecision(2); |
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> |
Цитата:
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); |
ksa,
если plosh = 20? |
Цитата:
У него такие варианты не обрабатываются в примере... :no: |
Цитата:
Цитата:
|
Вложений: 1
Цитата:
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 |
Спасибо всем =))) столько ответов.
|
Цитата:
|
Часовой пояс GMT +3, время: 07:03. |