We sacrifice by not doing any other technology, so that you get the best of Magento.

We sacrifice by not doing any other technology, so that you get the best of Magento.

    First we need to create ‘catalog_product_prices.xml’ at below location using the given code.

    appcodeMagemonkeysDiscountpercentageviewbaselayoutcatalog_product_prices.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
        <referenceBlock name="render.product.prices">
            <arguments>
                <argument name="default" xsi:type="array">
                    <item name="prices" xsi:type="array">
                    <item name="final_price" xsi:type="array">
                        <item name="render_class" xsi:type="string">MagentoCatalogPricingRenderFinalPriceBox</item>
                        <item name="render_template" xsi:type="string">Magemonkeys_Discountpercentage::product/price/final_price.phtml</item>
                    </item>
                    </item>
                </argument>
            </arguments>
        </referenceBlock>
    </layout>

    And create one more file to display the price and discount percentage on the product detail page.

    appcodeMagemonkeysDiscountpercentageviewbasetemplatesproductpricefinal_price.phtml

    <?php
    $priceModel = $block->getPriceType('regular_price');
    $finalPriceModel = $block->getPriceType('final_price');
    $idSuffix = $block->getIdSuffix() ? $block->getIdSuffix() : '';
    $schema = ($block->getZone() == 'item_view') ? true : false;
    ?>
    <?php if ($block->hasSpecialPrice()): ?>
    	<span class="special-price">
            <?php  echo $block->renderAmount($finalPriceModel->getAmount(), [
                'display_label' 	=> __('Special Price'),
                'price_id'      	=> $block->getPriceId('product-price-' . $idSuffix),
        	    'price_type'    	=> 'finalPrice',
                'include_container' => true,
                'schema' => $schema
        	]); ?>
        </span>
    	<span>
    	<?php
    	$item = $block->getSaleableItem();
        $_savePercent = 100 - round(((float)$item->getFinalPrice() / (float)$item->getPrice()) * 100);
    	echo '<b style="color:#008000">'.$_savePercent . '% off </b>';
    	?>
        </span>
    	<span class="old-price">
            <?php  echo $block->renderAmount($priceModel->getAmount(), [
            	'display_label' 	=> __('Regular Price'),
                'price_id'      	=> $block->getPriceId('old-price-' . $idSuffix),
                'price_type'    	=> 'oldPrice',
                'include_container' => true,
                'skip_adjustments'  => true
    	    ]); ?>
        </span>
    <?php else: ?>
        <?php  echo $block->renderAmount($finalPriceModel->getAmount(), [
            'price_id'      	=> $block->getPriceId('product-price-' . $idSuffix),
            'price_type'    	=> 'finalPrice',
            'include_container' => true,
        	'schema' => $schema
    	]); ?>
    <?php endif; ?>
     
    <?php if ($block->showMinimalPrice()): ?>
    	<?php if ($block->getUseLinkForAsLowAs()):?>
        	<a href="<?=  $block->getSaleableItem()->getProductUrl() ?>" class="minimal-price-link">
                <?= $block->renderAmountMinimal() ?>
            </a>
    	<?php else:?>
        	<span class="minimal-price-link">
                <?=  $block->renderAmountMinimal() ?>
            </span>
    	<?php endif?>
    <?php endif; ?>

    Output :

    field_5bfb909c5ccae

      Get a Free Quote