자바 스크립트 : 숫자의 x % 계산


82

숫자 (예 : 10000)를받은 다음 백분율 (예 : 35.8 %)을받은 경우 자바 스크립트에서 어떻게해야하는지 궁금합니다.

그게 얼마인지 어떻게 알아낼까요 (예 : 3580)


2
이 숫자에 35.8 %를 곱하면됩니다.var number=10000; alert(number*0.358);
gnarf

답변:


168
var result = (35.8 / 100) * 10000;

( 이 작업 순서 변경에 대해 jball 에게 감사드립니다 . 고려하지 않았습니다).


3
거기에 괄호가 필요하지 않습니다.
Klaster_1 2010

63
@ Klaster_1 네, 그저 관계를 더 명확하게 보여 주려고합니다. 세미콜론, 또는 var, 또는 whitspace 가 필요하지 않다고 말할 수 있지만 읽기가 어렵거나 좋은 코드가 아닐까요? : P
알렉스

2
연산 순서를 var result = pct / 100 * number;
바꾸면

10000을 나누는 이유는 무엇입니까? 물론 정답을 제공하지만 의미 상 의미가 없습니다.
Ryan Fox

1
@Ryan Fox 여기서 10000은 백분율 (35.8)을 계산하려는 총 금액입니다.
Cagy79 2015

9

백분율을 100으로 나눈 값 (0과 1 사이의 백분율을 구하기 위해) x 숫자로 나눈 값

35.8/100*10000

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));


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>

6

가장 좋은 것은 균형 방정식을 자연스럽게 암기하는 것입니다.

Amount / Whole = Percentage / 100

일반적으로 하나의 변수가 누락되었습니다.이 경우 Amount입니다.

Amount / 10000 = 35.8 / 100

그런 다음 고등학교 수학 (비율)을 양쪽에서 여러 외부로, 양쪽에서 내부로합니다.

Amount * 100 = 358 000

Amount = 3580

모든 언어와 문서에서 동일하게 작동합니다. JavaScript도 예외는 아닙니다.


3

부동 소수점 문제를 완전히 방지하려면 백분율을 계산하는 금액과 백분율 자체를 정수로 변환해야합니다. 이 문제를 해결 한 방법은 다음과 같습니다.

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. amount및 모두에서 소수 자릿수를 세 십시오.percent
  2. 둘 다 변환 amountpercent지수 표기법을 사용하여 및 정수로
  3. 적절한 끝 값을 결정하는 데 필요한 지수 표기법을 계산합니다.
  4. 최종 값 계산

지수 표기법의 사용은 Jack Moore의 블로그 게시물 에서 영감을 얻었 습니다 . 내 구문이 더 짧을 수 있다고 확신하지만 변수 이름을 사용하고 각 단계를 설명 할 때 가능한 한 명확하게하고 싶었습니다.



1

숫자 형변환으로 약간 현명하거나 중복 될 수 있지만 주어진 숫자의 백분율을 계산하는 안전한 함수는 다음과 같습니다.

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

// Usage: getPerc(10000, 25);

0

어려운 길 (학습 목적) :

var number = 150
var percent= 10
var result = 0
for (var index = 0; index < number; index++) {
   const calculate = index / number * 100
   if (calculate == percent) result += index
}
return result
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.