javascript:计算数字的x%

时间:2010-12-07 02:36:24

标签: javascript math

我想知道如何在javascript中给我一个数字(比如10000),然后给出一个百分比(比如说35.8%)

我将如何计算出多少(例如3580)

10 个答案:

答案 0 :(得分:144)

var result = (35.8 / 100) * 10000;

(感谢jball这次操作顺序的改变。我没有考虑过。)

答案 1 :(得分:9)

您的百分比除以100(以获得0到1之间的百分比)乘以数字

35.8/100*10000

答案 2 :(得分:7)

这就是我要做的事情:

// num is your number
// amount is your percentage
function per(num, amount){
  return num*amount/100;
}

...
<html goes here>
...

alert(per(10000, 35.8));

答案 3 :(得分:6)

如果要将%作为函数的一部分传递,则应使用以下替代方法:

<script>
function fpercentStr(quantity, percentString)
{
    var percent = new Number(percentString.replace("%", ""));
    return fpercent(quantity, percent);
}

function fpercent(quantity, percent)
{
    return quantity * percent / 100;
}
document.write("test 1:  " + fpercent(10000, 35.873))
document.write("test 2:  " + fpercentStr(10000, "35.873%"))
</script>

答案 4 :(得分:6)

我使用了两个非常有用的JS函数: http://blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/

function rangeToPercent(number, min, max){
   return ((number - min) / (max - min));
}

function percentToRange(percent, min, max) {
   return((max - min) * percent + min);
}

答案 5 :(得分:2)

var number = 10000;
var result = .358 * number;

答案 6 :(得分:2)

最好的事情是以自然的方式记住平衡方程式。

Amount / Whole = Percentage / 100

通常你缺少一个变量,在这种情况下它是Amount

Amount / 10000 = 35.8 / 100

然后你有高中数学(比例)从两侧外部和内部两侧。

Amount * 100 = 358 000

Amount = 3580

它在所有语言和纸上都是一样的。 JavaScript也不例外。

答案 7 :(得分:1)

更难的方式(学习目的):

private void addRdv_Click(object sender, RoutedEventArgs e)
    {
        string query = "INSERT INTO RendezVous VALUES((SELECT Id FROM Patient WHERE nomPatient=@nomPatient),@jour,@mois,@annee,@heure,@minute,(SELECT Id FROM Medecin WHERE nomMedecin=@nomMedecin))";
        using (connection = new SqlConnection(connectionString))
        using (SqlCommand command = new SqlCommand(query, connection))
        {
            connection.Open();
            command.Parameters.AddWithValue("@nomPatient", nomPatient.Text);
            command.Parameters.AddWithValue("@jour", Int32.Parse(jour.Text));
            command.Parameters.AddWithValue("@mois", Int32.Parse(mois.Text));
            command.Parameters.AddWithValue("@annee", Int32.Parse(annee.Text));
            command.Parameters.AddWithValue("@heure", Int32.Parse(heure.Text));
            command.Parameters.AddWithValue("@minute", Int32.Parse(minutes.Text));
            command.Parameters.AddWithValue("@nomMedecin", nomMedecin.Text);
            command.ExecuteScalar();
            command.CommandText = "SELECT * FROM RendezVous";
            SqlDataReader reader = command.ExecuteReader();
            nomMedecin.Text = reader.GetInt32(0).ToString();
        }

答案 8 :(得分:1)

为了完全避免浮点问题,计算其百分比的数量和百分比本身需要转换为整数。以下是我解决这个问题的方法:

function calculatePercent(amount, percent) {
    const amountDecimals = getNumberOfDecimals(amount);
    const percentDecimals = getNumberOfDecimals(percent);
    const amountAsInteger = Math.round(amount + `e${amountDecimals}`);
    const percentAsInteger = Math.round(percent + `e${percentDecimals}`);
    const precisionCorrection = `e-${amountDecimals + percentDecimals + 2}`;    // add 2 to scale by an additional 100 since the percentage supplied is 100x the actual multiple (e.g. 35.8% is passed as 35.8, but as a proper multiple is 0.358)

    return Number((amountAsInteger * percentAsInteger) + precisionCorrection);
}

function getNumberOfDecimals(number) {
    const decimals = parseFloat(number).toString().split('.')[1];

    if (decimals) {
        return decimals.length;
    }

    return 0;
}

calculatePercent(20.05, 10); // 2.005

如你所见,我:

  1. 计算amountpercent
  2. 中的小数位数
  3. 使用指数表示法将amountpercent转换为整数
  4. 计算确定正确结束值所需的指数表示法
  5. 计算结束值
  6. 指数表示法的使用受到Jack Moore's blog post的启发。我确信我的语法可能会更短,但我希望在使用变量名称和解释每个步骤时尽可能明确。

答案 9 :(得分:0)

使用数字强制转换可能有点古怪/多余,但这是计算给定数字百分比的安全函数:

function getPerc(num, percent) {
    return Number(num) - ((Number(percent) / 100) * Number(num));
}

// Usage: getPerc(10000, 25);