Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Преобразование строки к математическому результату (https://javascript.ru/forum/misc/44112-preobrazovanie-stroki-k-matematicheskomu-rezultatu.html)

totalavitaminoz 07.01.2014 11:49

Преобразование строки к математическому результату
 
a = "57 / 570";
a; //выведет 57 / 570

Как сделать, что бы выводилось 0.10 ?
Из идей только парсить строку, но может есть более лёгкие способы?

Строка будет простая, только с одним действием делением, без скобок и прочего. Как в примере.

ksa 07.01.2014 12:15

Цитата:

Сообщение от totalavitaminoz
Из идей только парсить строку, но может есть более лёгкие способы?

Есть еще, не любимый тут, метод
http://javascript.ru/eval
:D

danik.js 07.01.2014 14:03

Цитата:

Сообщение от totalavitaminoz
Строка будет простая, только с одним действием делением, без скобок и прочего. Как в примере.

Если только два операнда, то все ведь просто:
function calculate(expr) {
    var operands = expr.split('/');
    return parseFloat(operands[0]) / parseFloat(operands[1]);
}

alert(calculate("57 / 570"));

BallsShaped 07.01.2014 15:31

var a = "57 / 570";
var b = Function("return " + a)();
alert(b);

totalavitaminoz 07.01.2014 16:07

Цитата:

Сообщение от BallsShaped (Сообщение 290869)
var a = "57 / 570";
var b = Function("return " + a)();
alert(b);

Лаконично, но мне пока вобще не понятно)
А можно объяснить или ссылку на объяснение подобных вещей?

BallsShaped 07.01.2014 16:20

totalavitaminoz, Function

ruslan_mart 07.01.2014 17:04

function calc(n) {
	n = n.split(/ ?\/ ?/);
	var res = n[0], i;
	for(i=1; i<n.length; i++) res /= n[i];
	return res;
}

alert( calc('9/3') ); //3
alert( calc('16 / 2/2') ); //4
alert( calc('5/2.5') ); //2
alert( calc('10 / 1 / 2 / 2') ); //2.5
alert( calc('125/5/5/5') ); //1

Erolast 07.01.2014 18:23

Если это "57 / 570" не вводится посетителем сайта, не сохраняется нигде и не выводится впоследствии другими пользователями сайта, самый просто вариант - использовать функцию eval(), прогоняющую через js-парсер какую-либо строку.
var a = "57/570";
alert(eval(a));

Те же условия действуют на вариант BallsShaped'а, он синонимичен функции eval()


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