[JS] Trapezoids


0

function exercise(args) {

var result = ((args[0] + args[1])*args[2])/2;

return result.toFixed(7);

}

Здравейте, искам да попитам защо този код работи, но дава резултати много по - големи от желаните? Когато изрично преобърна agrs[0],[1] и [2] в числа, използвайки Number(), кодът дава желаните резултати. Какво се случва когато не използвам Number()?



Отговори



2
Не съм тествал задачата, но мисля, че като не си обърнал аргументите към числа събираш стрингове и когато тръгнеш да умножаваш аргументите те се кастват като числа. 
Пример:
5 + 5 като стринг е 55, а не 10.



0
А ако искаш да се увериш че става 55, пускаш дебъгера на Code,  маркираш args[0] + args[1] и избираш с дясно копче Debug: Evaluate. Аз също се чудех защо се получават странни резултати и това ми помогна да разбера какво се случва.



0
Използвай +args[0],+args[1],+args[2] за да парснеш стринговете към числа, и моя съвет е да си правиш променливи не да използваш аргс директно защото можеш да се объркаш кое какво е, моето решение.

от Vlaev (155 точки)


0

Браво колега, проверих го 100%. А защо моят код не върви?

function solve(args) {
       let a = +args[0],
           b = +args[1],
           h = +args[2],
        result = ((a + b)/2)*h; 
       return result.toFixed(7); 
  }


от webdesign (52 точки)

0
Не използвай let. Бгкодер не го харесва. Ползвай var вместо това.