Математика в JS - Как я могу получить соотношение в процентах - PullRequest
1 голос
/ 16 октября 2010

Я пытаюсь сделать конвертер, но я не знаю формулы для этого, например, как мне получить соотношение 85694 к 30711152. Итак, я могу получить% как 85694/30711152 *100 = 0,28 (округлено), но как мне получить соотношение 1 к 100?Я полагаю, что это будет около 1: 400?Но я не знаю, как получить это точно или какую формулу использовать ...

Ответы [ 3 ]

5 голосов
/ 16 октября 2010

Соотношение 1 в 30711152 / 85694. Просто инвертируйте дробь.

1 голос
/ 21 декабря 2017

Я понимаю, что это ОЧЕНЬ старый, но я недавно столкнулся с этим вопросом. Мне нужно было дать отношения двум сегментам данной популяции, где цифры могут быть довольно большими, но нужно было упрощенное соотношение, такое как 3: 5 или 2: 7. Я придумал это и надеюсь, что это поможет:

function getRatio(a,b,tolerance) { 

/*where a is the first number, b is the second number,  and tolerance is a percentage 
of allowable error expressed as a decimal. 753,4466,.08 = 1:6, 753,4466,.05 = 14:83,*/

    if (a > b) { var bg = a; var sm = b; } else { var bg = b; var sm = a; }
    for (var i = 1; i < 1000000; i++) {
        var d = sm / i;
        var res = bg / d;
        var howClose = Math.abs(res - res.toFixed(0));
        if (howClose < tolerance) {
            if (a > b) { 
               return res.toFixed(0) + ':' + i; 
            } else { 
               return i + ':' + res.toFixed(0); 
            }
        }
    }
}
1 голос
/ 16 октября 2010

Ну, соотношение остается постоянным.Если у вас есть соотношение 3:12, оно эквивалентно соотношению 1: 4, что, в свою очередь, равно 25%.Так 85694: 30711152 = 1: 358,381.

...