숫자를 백분율로


104

숫자에서 "0."XXX %를 제거하고 백분율로 만드는 가장 좋은 방법은 무엇입니까? 숫자가 정수이면 어떻게 되나요?

var number1 = 4.954848;
var number2 = 5.9797;

$(document).ready(function() {    
    final = number1/number2;
    alert(final.toFixed(2) + "%");
});

답변:


199

백분율은 다음과 같습니다.

(number_one / number_two) * 100

멋진 것은 필요 없습니다.

var number1 = 4.954848;
var number2 = 5.9797;

alert(Math.floor((number1 / number2) * 100)); //w00t!

47
pct 십진수를 유지하려면 : var pct = (num * 100) .toFixed (1) + "%";
efwjames

5
alert (~~ ((숫자 1 / 숫자 2) * 100)); Math.floor는 :) ~~보다 느리다로
nyxz

1
Math.floor? 그리고 아니 Math.round? 귀하의 예제에서도 코드 출력 보다 4.954848 / 5.9797더 가깝습니다 . 83%82%
gaazkam

9
@nyxz Ugg-- 기계가 아닌 인간을위한 코드를 작성합니다. 일부 슈퍼 꽉 중요한 루프하지 않는 한, ~~훨씬 덜 읽을 수보다Math.floor
제레미 J Starcher

5
내가 아는 이유가 없습니다. 어쨌든 모든 비율의 83 %가 구성됩니다
Naftali aka Neal


36

가장 좋은 해결책 en은 영어 로케일입니다.

fraction.toLocaleString("en", {style: "percent"})


1
스마트 폰 지원 여부에주의하세요 .... 현재 지원은 그다지 이상적이지 않습니다.
jdehaan

(9.23) .toLocaleString ( "en", {style : "percent"})은 "923 %"를 반환합니다.이 문제를 해결할 방법이 있습니까?
슬 로렌조

2
@slorenzo 9.23은 실제로 923 %입니다. 9.23 %를 원한다고 가정하면 9.23을 100으로 나눈 다음 변환을 시도해야합니다.
Steve Hawkins

3
물론이 같은 시도 할 수로 진수를 얻으려면 @slorenzo fraction.toLocaleString("en", { style: "percent", minimumFractionDigits: 2 })참조 stackoverflow.com/a/29773435/411428
만프레드

16

음, 만약 당신이 0.123456백분율을 제공하기위한 나눗셈의 결과 와 같은 숫자가 있다면 , 그것에 100을 곱한 다음 그것을 반올림하거나 toFixed당신의 예에서와 같이 사용 하십시오.

Math.round(0.123456 * 100) //12

다음은이를 수행하는 jQuery 플러그인입니다.

jQuery.extend({
    percentage: function(a, b) {
        return Math.round((a / b) * 100);
    }
});

용법:

alert($.percentage(6, 10));

15
어디 jQuery.roundjQuery.dividejQuery.multiply
Raynos

2
@ Xeon06 으음 OP가 마음을 바꾼 것 같습니다. 기묘한. 내 대답 에는 jQuery가 충분 하지 않았습니다 .
Naftali aka Neal

2
@Raynos 문자열 조작을 사용하여 루프와 라운드를 사용하여 곱하기 시작했지만 나누기를 포기했습니다.
Alex Turpin 2011

2

Numeral.js 는 숫자, 통화, 백분율 형식을 지정할 수 있고 현지화를 지원하는 라이브러리입니다.

numeral(0.7523).format('0%') // returns string "75%"


1
마지막 커밋 numeral.js은 2017 년 3 월 27 일입니다. 라이브러리가 완벽하거나 (결함이 없음) 더 이상 적극적으로 유지 관리되지 않습니다. 2019 년 1 월 28 일 현재이 프로젝트에는 135 개의 미해결 문제가 있으며 가장 오래된 문제는 2012 년 11 월부터입니다. 거의 2 년 동안 커밋되지 않은 미해결 문제의 수는 프로젝트가 더 이상 관리되지 않음을 나타냅니다. 그렇지 않다는 확신을 갖게되어 기쁩니다.
Manfred


1

대부분의 답변은 끝에 '%'를 추가하는 것이 좋습니다. 나는 차라리 선호 Intl.NumberFormat()한다{ style: 'percent'}

var num = 25;

var option = {
  style: 'percent'

};
var formatter = new Intl.NumberFormat("en-US", option);
var percentFormat = formatter.format(num / 100);
console.log(percentFormat);


0

@xtrem의 대답은 좋지만 toFixed과 the makePercentage가 일반적 이라고 생각합니다 . 두 가지 기능을 정의하면 어디서나 사용할 수 있습니다.

const R = require('ramda')
const RA = require('ramda-adjunct')

const fix = R.invoker(1, 'toFixed')(2)

const makePercentage = R.when(
  RA.isNotNil,
  R.compose(R.flip(R.concat)('%'), fix, R.multiply(100)),
)

let a = 0.9988
let b = null

makePercentage(b) // -> null
makePercentage(a) // -> ​​​​​99.88%​​​​​

2
이 코드 스 니펫은 질문을 해결할 수 있지만 설명을 포함하면 게시물의 품질을 개선하는 데 실제로 도움이됩니다. 앞으로 독자를위한 질문에 답하고 있으며, 해당 사용자는 코드 제안 이유를 모를 수 있습니다.
31piy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.