백분율 계산기

백분율을 계산하고 답이 나온 과정까지 봅니다. 값과 그것을 설명하는 문장, 그리고 직접 넣은 숫자가 들어간 공식.

Y의 X%는 얼마인가요?
15

60의 25%는 15입니다.

60 × 25 ÷ 100 = 15
X는 Y의 몇 퍼센트인가요?
25

15는 60의 25%입니다.

15 ÷ 60 × 100 = 25
X에서 Y로의 변화는 몇 퍼센트인가요?
50

40에서 60로의 변화는 50%, 곧 상승입니다.

(60 - 40) ÷ 40 × 100 = 50
X를 Y% 변화시키면 얼마인가요?
48

60를 -20% 변화시키면 48입니다.

60 + 60 × -20 ÷ 100 = 48
X가 Y%라면 전체는 얼마인가요?
100

118는 100의 118%입니다.

118 ÷ (118 ÷ 100) = 100

다섯 개의 공식

“퍼센트 계산기”라는 말 뒤에는 서로 다른 다섯 가지 질문이 숨어 있고, 그중 엉뚱한 것에 답하면 묻지도 않은 질문에 대한 자신만만한 숫자를 받게 됩니다. 다섯 가지를 한 화면에 모두 올려 둔 이유가 바로 그것입니다. 아래는 그 다섯 가지를 산수 그대로 적은 것이며, X와 Y는 해당 패널의 두 칸에 입력하는 값입니다.

  • Y의 X%는 얼마인가? — Y × X ÷ 100. 60에 대한 25% 할인은 15를 깎아 줍니다.
  • X는 Y의 몇 퍼센트인가? — X ÷ Y × 100. 60 중 15는 25%입니다.
  • X에서 Y로의 변화는 몇 퍼센트인가? — (Y − X) ÷ X × 100. 지난달 40에서 이번 달 60으로는 50% 상승입니다.
  • X를 Y% 변화시키면 얼마인가? — X + X × Y ÷ 100. 60에 20% 할인을 적용하면 48이며, 두 단계가 아니라 한 단계로 나옵니다.
  • X가 Y%라면 전체는 얼마인가? — X ÷ (Y ÷ 100). 118이 18% 부가세가 이미 붙은 가격이라면, 세금 전 가격은 100이었습니다.

이 페이지의 나머지를 관통하는 낱말이 하나 있습니다. 기준값은 백분율이 무엇에 대해 재어지는지를 말하는 값, 곧 산수가 나누는 수입니다. 다섯 중 둘에는 기준값이 아예 없습니다. 오직 100으로만 나누기 때문입니다. “Y의 X%”와 “X를 Y% 변화시키면”은 입력할 수 있는 모든 수의 짝에 대해 동작하고, 그 답은 언제나 정확하게 떨어집니다. 나머지 셋은 사용자가 고른 수로 나눕니다. 그래서 답이 없는 질문을 받을 수 있는 것도 그 셋뿐이고, 자릿수가 끝나지 않는 답을 내놓을 수 있는 것도 그 셋뿐입니다.

20% 상승과 20% 하락은 서로 상쇄되지 않는다

100을 20% 올리면 120이 됩니다. 거기서 다시 20%를 빼면 100이 아니라 96이 됩니다. 두 움직임은 퍼센트로는 같은 크기이고 말로도 같은 거리인데, 그래도 4% 낮은 자리에 남습니다.

잘못된 것은 없습니다. 두 백분율은 서로 다른 기준값에 대해 재어졌습니다. 상승은 100의 20%라 20이고, 하락은 120의 20%라 24입니다. 백분율은 혼자서는 결코 양이 아닙니다. 무엇인가에 대한 상대적인 양이며, 그 사이에 그 무엇인가가 바뀌었습니다.

이 차이는 우연이 아니라 규칙입니다. 어떤 크기의 상승이든 같은 크기의 하락이 뒤따르면 언제나 손해이고, 언제나 같은 만큼 손해입니다. 10%와 10%는 1% 낮은 자리에, 20%와 20%는 4% 낮은 자리에, 50%와 50%는 25% 낮은 자리에 남깁니다. 순서도 상관없습니다. 곱셈은 순서를 따지지 않기 때문입니다. 먼저 20% 떨어뜨리고 나중에 20% 올려도 다시 96에 닿습니다.

“50% 떨어졌다가 50% 올랐다”고 보도된 주식이 여전히 4분의 1 낮은 곳에 있는 이유가 여기 있고, 할인 위에 얹은 할인이 두 할인의 합이 아닌 이유도 여기 있습니다. 무엇이 실제로 원래 자리로 되돌려 놓는지 알고 싶다면 세 번째 패널에 물어보십시오. 120에서 100으로는 −20%가 아니라 −16.6667%의 변화입니다.

퍼센트포인트는 퍼센트가 아니다

중앙은행이 기준금리를 2%에서 3%로 옮깁니다. 두 신문이 이를 보도합니다. 하나는 금리가 1포인트 올랐다고 하고, 다른 하나는 금리가 50퍼센트 올랐다고 합니다. 둘 다 옳습니다. 그리고 이 둘을 같은 주장으로 받아들인 독자는 그 기사를 오십 배만큼 잘못 읽은 것입니다.

  • 1퍼센트포인트 상승. 이것은 두 수치를 이미 적혀 있던 단위 그대로 뺀 차이입니다. 3 빼기 2는 1입니다.
  • 50퍼센트 상승. 이것은 출발한 자리에 견준 변화입니다. 시작값 2에 1이 더해졌으니 절반만큼 더 늘어난 것입니다.
  • 같은 사건, 참인 두 문장, 서로 다른 두 숫자. 둘 중 어느 쪽을 말하는지 알려 주는 것이 바로 “포인트”라는 낱말이고, 그 낱말은 있어야 할 자리에서 너무 자주 빠집니다.

이 혼동은 예상 그대로의 방향으로 돈이 됩니다. 1%에서 2%로 오른 수수료는 1퍼센트포인트 오른 것이자 두 배가 된 것인데, 이를 “1% 인상”이라고 적으면 두 배를 반올림 오차처럼 들리게 만듭니다. 반대 방향으로도 통합니다. 40%에서 44%로 움직인 여론조사는 4포인트 오른 것인데, 이를 “4% 상승”이라고 쓰면 실제보다 작게 말하는 셈입니다. 40의 4%는 1.6포인트이기 때문입니다.

이를 위한 여섯 번째 패널은 일부러 두지 않았습니다. 퍼센트포인트는 뺄셈입니다. 포인트 차이가 필요하면 두 수치를 빼면 그것으로 끝입니다. 도구가 필요한 쪽은 다른 읽기이고, 그것이 세 번째 패널입니다. 변화 패널에 2와 3을 넣으면 같은 움직임이 50% 상승이라고 알려 줍니다.

퍼센트를 되돌리는 것은 빼는 것이 아니다

청구서가 118로 나왔고, 18% 부가세는 이미 그 숫자 안에 들어 있습니다. 세금 전 가격은 얼마였을까요? 솔깃한 방법은 118에서 18%를 빼는 것이고, 그러면 96.76이 나옵니다. 옳은 답은 100이며, 한 단계로 확인할 수 있습니다. 100 더하기 18%는 118이지만, 96.76 더하기 18%는 114.1768입니다.

이 실수는 앞 절의 실수가 옷만 갈아입은 것입니다. 그 18%는 세금 전 가격에 더해졌으니 100의 18%입니다. 18%를 빼면 세금 후 가격에서 빼는 것이므로 118의 18%를 덜어 내는데, 이는 애초에 더해진 적이 없는 더 큰 수입니다. 퍼센트를 더하는 것과 같은 퍼센트를 덜어 내는 것은 서로의 역연산이 아니며, 그 차이는 작지 않습니다. 여기서는 3.24로, 세금 전 가격의 3퍼센트가 넘습니다.

게다가 언제나 같은 방향으로 어긋나기 때문에, 피하기만 할 것이 아니라 알아 둘 값어치가 있습니다. 빼기로 되돌리면 원래 수치를 매번 낮게 잡게 되므로, 부가세를 이런 식으로 되돌리는 사업체는 발행하는 모든 청구서에서 자기 세전 매출을 실제보다 적게 신고하게 됩니다.

다섯 번째 패널이 바로 그 되돌리기입니다. 118이 무엇의 118%인지 물으면 100이라고 답합니다. 같은 패널이 할인도 처리합니다. 20% 할인 후 48인 재킷은 예전 가격의 80%에 해당하는 48이므로, 48이 무엇의 80%인지 물으면 60이라고 답합니다. 20%를 도로 더해서 얻는 57.6이 아닙니다.

변화가 0보다 아래에서 시작할 때

어떤 사업체가 한 해에 10을 잃고 그다음 해에 10을 법니다. 어떻게 읽어도 회복인데, 백분율 변화의 표준 공식은 −200%를 돌려줍니다. 도구는 그 수치를 보여 주고, 그 아래 문장에서는 이 변화를 상승이라 부르며, 둘이 서로 어긋난다고 알려 줍니다.

부호가 거꾸로 나오는 것은 기준값이 음수이기 때문입니다. 변화 자체는 +20이고, +20을 −10으로 나누면 결과의 부호가 뒤집히지만 그것이 가리키는 변화는 위로 향했습니다. 이 성질은 이 사례만의 것이 아니라, 음수인 출발값에서 잰 모든 실제 변화가 가지는 성질입니다. 0 아래에서는 백분율의 부호가 실제로 움직인 방향과 반대입니다.

도구는 기준값의 절댓값을 취해 편안한 +200%를 돌려줄 수도 있었습니다. 일부러 그렇게 하지 않습니다. 스프레드시트도, 회계 프로그램도, 모든 교과서도 부호 있는 공식을 쓰므로, 조용히 다른 공식을 쓰는 도구는 사용자가 대조하고 있는 수치와 어긋나게 되고, 둘 중 어느 쪽이 규칙을 바꿨는지 알 길이 없습니다. 방향을 가리키는 낱말은 차이만으로 따로 계산하므로, 부호가 맞지 않는 자리에서도 방향은 맞습니다.

그래서 손에 남는 것은 스프레드시트와 맞춰 볼 수 있는 수치와 사람에게 말할 수 있는 문장이고, 이 둘은 같은 문장이 아닙니다. 실무에서 음수 기준값에서 잰 백분율 변화는 어떤 보고서에서든 의심하며 다룰 만한 수치입니다. “10 손실에서 10 이익으로 개선되었다”는 사실을 담지만, “−200%”는 어떻게 계산하든 그 사실을 잘못 담습니다.

쉼표와 마침표, 그리고 뜻한 수가 무엇이었는지

이 페이지는 열세 개 언어로 존재하고, 그중 여덟 개는 소수점을 쉼표로 씁니다. 12,5를 백이십오로 읽는 도구는 그 언어들에서 조금 틀린 정도가 아니라, 아주 평범해 보이는 수 위에서, 그 다수의 언어에서 소리 없이 틀린 것이 됩니다. 그래서 읽는 방식은 지금 보고 있는 페이지의 언어가 정하며, 앉아 있는 기계의 설정이 정하는 일은 결코 없습니다.

자기 언어가 먼저 오고, 그렇게는 읽을 수 없지만 다른 방식으로는 한 가지로만 읽히는 것은 그래도 받아들입니다. 스프레드시트에서 복사한 12,5를 이 한국어 페이지에 붙여 넣으면 십이 점 오가 됩니다. 다른 수일 수가 없기 때문입니다. 그에 대해서는 아무 말도 하지 않습니다. 정해진 것이 없기 때문입니다. 읽는 방식이 하나뿐이었습니다.

남는 것은 정말로 모호한 경우이고, 그것은 대칭입니다. 쉼표를 쓰는 언어만의 문제가 아닙니다. 구분 기호 뒤에 정확히 세 자리가 따라오면 그것은 소수점일 수도 있고 천 단위 구분 기호일 수도 있습니다. 어느 문자든 마찬가지입니다. 이 한국어 페이지에서 1.234는 일 점 몇일 수도 있고 천이백삼십사일 수도 있으며, 1,234도 꼭 같은 방식으로 모호합니다. 독일어나 스페인어 페이지에서는 같은 두 표기가 역할을 맞바꾼 채 같은 두 질문을 던집니다. 그 모든 경우에 페이지의 언어가 결정을 내리고, 도구는 어느 쪽으로 읽었는지 알려 줍니다. 원하지 않은 추측이 답 속에 묻히지 않고 눈에 보이도록 하기 위해서입니다.

천 단위 구분 기호는 다른 것으로 오해할 여지가 없는 곳이라면 어디서나 받아들이므로, 1,048,576도 1 048 576도 백만하고 조금입니다. 답은 자기 언어의 구분 기호로 다시 쓰이므로, 그 수가 나온 문서에 결과를 그대로 붙여 넣을 수 있습니다.

정확한 답과, 반올림할 수밖에 없었던 답

백분율은 사람이 손으로 검산하는 산수라서, 이 도구는 프로그래밍 언어가 계산하듯 계산하지 않습니다. 브라우저가 기본으로 손을 뻗는 부동소수점이 아니라 정확한 십진수로 셈합니다. 그래서 끝까지 적을 수 있는 답은 아무리 길어져도 끝까지 적힙니다. 512분의 1은 0.1953%가 아니라 일곱 자리 그대로 0.1953125%입니다.

아예 적을 수 없는 답도 있습니다. 3분의 1은 33.3333…%로 3이 끝없이 이어지며, 아무리 조심해도 달라지지 않습니다. 그런 답은 소수점 아래 넷째 자리까지, 곧 실제로 쓸 수 있는 숫자로 보여 주고, 도구는 반올림했다고 말하며 그 아래에 더 긴 전개를 내놓습니다. 그렇게 말하는 뜻은 두 상황을 구별할 수 있게 하는 데 있습니다. 아래에 아무 알림도 없는 수는 정돈된 답이 아니라 답 전체입니다.

이 구별은 알림이 드물기 때문에만 성립하고, 알림이 드문 것은 설계에 따른 것입니다. 다만 알림이 끝없이 이어지는 답에만 붙는 것은 아닙니다. 기준값이 없는 두 패널은 100으로만 나누므로 거기서 끝없이 되풀이되는 것은 나오지 않습니다. 그래도 긴 소수끼리 곱하면 정확한 답이 적어 넣을 자리보다 훨씬 길어질 수 있습니다. 1.23456789의 0.0000001%는 소수점 아래 열일곱째 자리에서 딱 떨어지지만, 다른 답과 마찬가지로 표시를 위해 줄어듭니다. 페이지가 처음 보여 주는 다섯 개의 예시는 이런 일이 하나도 닿지 않도록 골랐습니다. 하나하나가 정확하고 짧게 떨어지므로, 아무것도 입력하기 전에 그 자리에 알림이 앉아 있다면 그것은 정말로 무언가가 반올림되고 있다는 뜻입니다.

소수점 아래 네 자리는 1에 가까운 수에는 좋은 규칙이지만, 0에 가까운 수에는 보여 줄 것이 남지 않는 쓸모없는 규칙입니다. 그래서 답이 너무 작아 네 자리로는 아무 말도 할 수 없을 때, 곧 0.00005보다 작을 때, 도구는 대신 유효숫자를 네 자리 세고 그 아래 전개는 열두 자리를 셉니다. 앞서의 열일곱 자리 답도 0이 아니라 0.000000001235로 보입니다. 다른 선택지는 0을 그대로 찍고 패널에서 유일하게 뜻 있는 숫자를 아래 알림이 떠맡게 하는 것이었지만, 그것은 페이지를 뒤집어 놓기에 택하지 않았습니다. 값이 답이고 알림은 고백이며, 그 반대가 아닙니다.

자주 묻는 질문

퍼센트와 퍼센트포인트는 무엇이 다른가요?
퍼센트포인트는 두 백분율을 적힌 그대로 뺀 단순한 차이입니다. 2%에서 3%로는 1퍼센트포인트 상승입니다. 퍼센트는 출발한 자리에 견준 변화를 말하며, 2%에서 3%로는 50퍼센트 상승입니다. 두 문장 모두 같은 사건에 대해 참이고 여기서는 오십 배만큼 다르므로, “포인트”라는 낱말은 나타날 때마다 진짜 일을 하고 있는 셈입니다.
가격이 20% 올랐다가 20% 내리면 원래 자리로 돌아오나요?
아니요. 출발점보다 4% 아래입니다. 100은 120이 되고, 120의 20%는 24이므로 96까지 내려옵니다. 하락은 상승보다 큰 수를 기준으로 재어집니다. 어떤 크기에서도 같은 일이 일어납니다. 10%와 10%는 1% 아래에, 50%와 50%는 25% 아래에 남깁니다. 120을 100으로 되돌리려면 16.6667%의 하락이 필요합니다.
부가세가 붙기 전 가격은 어떻게 구하나요?
세율을 빼지 말고 전체 백분율로 나누십시오. 118에 18% 부가세가 포함되어 있다면 118은 세금 전 가격의 118%이므로 답은 100입니다. 118에서 18%를 빼면 96.76이 나오는데, 이는 3.24만큼 틀렸고 매번 같은 방향으로 틀립니다. 다섯 번째 패널이 이를 바로 해 줍니다. 가지고 있는 수치를 첫째 칸에, 전체 백분율을 — 118, 또는 20% 부가세라면 120을 — 둘째 칸에 넣으십시오.
사업이 나아졌는데 도구는 왜 −200%라고 하나요?
변화를 음수인 출발값에서 재기 때문입니다. 10 손실에서 10 이익으로 가는 것은 +20을 −10으로 나눈 변화이고, 움직임은 위로 향했는데도 음수로 나옵니다. 그것이 표준 공식이자 사용자의 스프레드시트가 쓰는 공식이므로, 도구는 조용히 다른 공식을 쓰는 대신 그대로 지키고, 방향을 가리키는 낱말은 차이로부터 따로 계산하며, 둘이 어긋난다고 알려 줍니다.
제 숫자를 어떻게 읽었는지 왜 알려 주었나요?
두 가지로 읽힐 수 있었고 무언가가 정해야 했기 때문입니다. 뒤에 정확히 세 자리가 오는 구분 기호는 — 1,234든 1.234든, 어느 문자든 — 올바른 소수이기도 하고 올바른 천 단위 구분이기도 하므로, 페이지의 언어가 이를 정하고 도구는 무엇으로 정했는지 말해 줍니다. 읽기가 정말로 선택이었을 때만 나타납니다. 12,5와 12.5는 이 사이트 어디서나 십이 점 오를 뜻하고, 둘 중 어느 쪽에도 언급이 붙지 않습니다.
제 답은 왜 소수점 넷째 자리까지만 나오나요?
정확한 값이 유한한 자릿수에 들어가지 않기 때문입니다. 3분의 1은 33.3333…%로 끝이 없습니다. 그럴 때 답은 읽기 좋게 줄여서 보여 주고, 도구는 줄였다고 말하며 아래에 더 긴 전개를 함께 내놓습니다. 정확히 적을 수 있는 답은 몇 자리가 걸리든 정확히 적으므로, 아래에 아무 알림도 없는 결과에는 뒤에 숨은 것도 없습니다. 예외가 하나 있는데, 네 자리로는 아무것도 보일 수 없을 만큼 작은 답입니다. 0.00005보다 작으면 대신 유효숫자 네 자리가 보이므로, 맨 0이 아니라 0.000000001235가 됩니다.
제 코드에서 백분율을 부동소수점으로 저장해도 될까요?
돈이나 맞춰 봐야 하는 것이라면 안 됩니다. 이진 부동소수점은 0.1을 정확히 나타내지 못하므로, 요율과 가격이 화폐 단위의 몇 분의 일씩 어긋나다가 결국 합이 맞지 않게 됩니다. 밑에 깔린 정수를 — 센트, 베이시스포인트를 — 저장하거나 십진 타입을 쓰고, 반올림은 표시하는 순간에 한 번만 하십시오. 이 도구가 안에서 하는 일이 바로 그것이고, 그래서 정확하다는 답이 정말로 정확합니다.
제가 입력한 내용이 서버로 전송되나요?
아니요. 다섯 가지 계산 모두 입력하는 동안 브라우저 안에서 실행되며, 아무것도 업로드되거나 기록되지 않고, 네트워크 연결이 전혀 없어도 페이지는 그대로 동작합니다.