<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Johny Gleck</title>
    <description>The latest articles on DEV Community by Johny Gleck (@johnybrand).</description>
    <link>https://dev.to/johnybrand</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3976822%2Fd9da6d5d-33b7-4509-82fd-2c1c1b07e282.jpg</url>
      <title>DEV Community: Johny Gleck</title>
      <link>https://dev.to/johnybrand</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/johnybrand"/>
    <language>en</language>
    <item>
      <title>How to Find the Original Price Before a Percentage Discount</title>
      <dc:creator>Johny Gleck</dc:creator>
      <pubDate>Wed, 24 Jun 2026 10:21:00 +0000</pubDate>
      <link>https://dev.to/johnybrand/how-to-find-the-original-price-before-a-percentage-discount-mkc</link>
      <guid>https://dev.to/johnybrand/how-to-find-the-original-price-before-a-percentage-discount-mkc</guid>
      <description>&lt;p&gt;One of the most misunderstood percentage calculations is working backwards from a discounted price to find the original. Most people instinctively add the discount percentage back, which gives the wrong answer every time.&lt;br&gt;
Here is the correct formula, four worked examples, and a JavaScript function you can use directly in your projects.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Adding the Percentage Back Is Wrong
&lt;/h2&gt;

&lt;p&gt;A product is $85 after a 15% discount. Most people try:&lt;br&gt;
&lt;code&gt;$85 + 15% of $85 = $85 + $12.75 = $97.75 ❌&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Wrong. The original price was $100, not $97.75.&lt;br&gt;
&lt;strong&gt;The reason:&lt;/strong&gt; the 15% discount was calculated on the original price, not the sale price. So you cannot simply reverse it by adding 15% to the sale price.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Correct Formula
&lt;/h2&gt;

&lt;p&gt;Original price = Sale price ÷ (1 − discount as decimal)&lt;br&gt;
For a price increase (finding original before a markup):&lt;br&gt;
Original price = Final price ÷ (1 + increase as decimal)&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 1 - Retail Discount
&lt;/h3&gt;

&lt;p&gt;Sale price: $85&lt;br&gt;
Discount: 15%&lt;/p&gt;

&lt;p&gt;Original = $85 ÷ (1 − 0.15)&lt;br&gt;
Original = $85 ÷ 0.85&lt;br&gt;
Original = $100 ✅&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 2 - Higher Discount
&lt;/h3&gt;

&lt;p&gt;Sale price: $60&lt;br&gt;
Discount: 40%&lt;/p&gt;

&lt;p&gt;Original = $60 ÷ (1 − 0.40)&lt;br&gt;
Original = $60 ÷ 0.60&lt;br&gt;
Original = $100 ✅&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 3 - Finding Original Before a Tax Was Added
&lt;/h3&gt;

&lt;p&gt;Price including 20% VAT: $120&lt;/p&gt;

&lt;p&gt;Original (ex-VAT) = $120 ÷ (1 + 0.20)&lt;br&gt;
Original = $120 ÷ 1.20&lt;br&gt;
Original = $100 ✅&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 4 - Salary Before a Raise
&lt;/h3&gt;

&lt;p&gt;Current salary: $52,500 (after a 5% raise)&lt;/p&gt;

&lt;p&gt;Original = $52,500 ÷ (1 + 0.05)&lt;br&gt;
Original = $52,500 ÷ 1.05&lt;br&gt;
Original = $50,000 ✅&lt;/p&gt;
&lt;h2&gt;
  
  
  JavaScript Implementation
&lt;/h2&gt;

&lt;p&gt;Here is a clean utility function you can use in any project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="cm"&gt;/**
 * Find original value before a percentage change was applied
 * @param {number} finalValue - The value after the change
 * @param {number} percentage - The percentage that was applied (positive for increase, negative for decrease)
 * @returns {number} The original value before the change
 */&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;findOriginalValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;finalValue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;percentage&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;percentage&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Cannot reverse a 100% decrease&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;finalValue&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;percentage&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Examples&lt;/span&gt;
&lt;span class="nf"&gt;findOriginalValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;85&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// 100 (original before 15% discount)&lt;/span&gt;
&lt;span class="nf"&gt;findOriginalValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// 100 (original before 20% VAT)&lt;/span&gt;
&lt;span class="nf"&gt;findOriginalValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;52500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// 50000 (salary before 5% raise)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Handling Edge Cases
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;findOriginalValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;finalValue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;percentage&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Guard against division by zero&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;percentage&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Cannot reverse a 100% decrease - original was zero&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// Guard against invalid inputs&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;finalValue&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;percentage&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TypeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Both arguments must be numbers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;multiplier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;percentage&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;finalValue&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;multiplier&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Round to 2 decimal places&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Where This Comes Up in Real Projects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;E-commerce:&lt;/strong&gt; Displaying original prices alongside sale prices&lt;br&gt;
&lt;strong&gt;Tax calculators:&lt;/strong&gt; Stripping VAT/GST from inclusive prices&lt;br&gt;
&lt;strong&gt;Payroll systems:&lt;/strong&gt; Calculating pre-raise salary from current salary&lt;br&gt;
&lt;strong&gt;Pricing engines:&lt;/strong&gt; Reversing markup to find wholesale cost&lt;br&gt;
&lt;strong&gt;Financial apps:&lt;/strong&gt; Finding pre-interest principal amounts&lt;/p&gt;

&lt;h2&gt;
  
  
  Skip the Manual Calculation
&lt;/h2&gt;

&lt;p&gt;For quick reverse percentage calculations without writing code, &lt;a href="https://onlinepercentage.net" rel="noopener noreferrer"&gt;https://onlinepercentage.net&lt;/a&gt; has a dedicated reverse percentage mode. Enter the final value and the percentage, the original value appears instantly. Free, no sign-up needed.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>The 6 Percentage Calculations Every Developer Should Know</title>
      <dc:creator>Johny Gleck</dc:creator>
      <pubDate>Wed, 10 Jun 2026 02:59:24 +0000</pubDate>
      <link>https://dev.to/johnybrand/the-6-percentage-calculations-every-developer-should-know-e5i</link>
      <guid>https://dev.to/johnybrand/the-6-percentage-calculations-every-developer-should-know-e5i</guid>
      <description>&lt;p&gt;Developers constantly work with percentages — conversion rates, A/B test lifts, error rates, performance improvements. Yet most reach for a spreadsheet or Google every time. Here are the 6 formulas worth knowing.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Percentage Change (most used)
((New − Old) ÷ Old) × 100
Use case: DAU went from 8,000 to 10,000 → 25% increase&lt;/li&gt;
&lt;li&gt;X is What % of Y?
(X ÷ Y) × 100
Use case: 450 conversions from 1,800 sessions → 25% conversion rate&lt;/li&gt;
&lt;li&gt;What is X% of Y?
Y × (X ÷ 100)
Use case: 15% of $2,400 monthly revenue = $360&lt;/li&gt;
&lt;li&gt;Reverse Percentage (find original value)
Final ÷ (1 − decimal)
Use case: Server cost after 20% discount is $400 → original was $500&lt;/li&gt;
&lt;li&gt;Percentage Difference (comparing two equal values)
|V1−V2| ÷ ((V1+V2) ÷ 2) × 100
Use case: Comparing response times of two API endpoints&lt;/li&gt;
&lt;li&gt;Percent Error (testing/QA)
|Measured − Expected| ÷ |Expected| × 100
Use case: Load test estimated 500 req/s, actual was 487 → 2.6% error&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For quick calculations without writing code, &lt;a href="https://onlinepercentage.net" rel="noopener noreferrer"&gt;https://onlinepercentage.net&lt;/a&gt; handles all 6 types instantly in one place.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
