• 20-04-2019, 21:15:51
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba
    bir sitemde %5 indirimli fiyatı yazdırmak istiyorum.
    Kodlarım şu şekilde;
    <?php
    $havale=$special ;
    $toplam=$havale * 5/100;
    $sonuc=($special-$toplam);?>
    <?php
    $havale=$special ;
    $toplam=$havale * 5/100;
    $s_sonuc=($special-$toplam);?>
    
    <td style="border-bottom:1px dotted #999; height:30px; ;width:200px;"><span class="price-tax">Havale / Eft İndirimli Fiyatı</span></td>
    <td style="border-bottom:1px dotted #999;">
    <?php if (!$special) { ?>
    <span style="color: #ff6600;font-weight:bold; font-size:15px;">:<?php echo (number_format($sonuc, 3, ',', '.')) ; ?>TL</span>
    <?php } else { ?>
    <span style="color: #ff6600;font-weight:bold; font-size:15px;">:<?php echo (number_format($s_sonuc, 3, ',', '.')); ?> TL</span>
    
                      <?php } ?>
    Ancak şöyle bir sorun var;
    Sonuc 3 oldugu zaman 3 haneli rakamlar 902,500 şeklinde görünüyor.
    4 haneli rakamlar: 2,328 tl olarak görünüyor yani yanında 2 tane 0 eksik.3 hanelidede 1 tane sıfır fazla
    bu sonuc 2 yaptığım zaman;
    4 haneli rakamlar: 2,33 şeklinde gorunuyor.
    3 hanelide hiç bir problem yok 902,50 şeklinde görünüyor.

    Bütün varyasyonları denedim.
    Nerde hata yapıyor olabilirim?
  • 20-04-2019, 21:21:18
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    special ve havale değerlerini yukarıda number format yaparak işlem yaparak deneyebilirsin.
  • 20-04-2019, 21:35:32
    #3
    AkelBilisim adlı üyeden alıntı: mesajı görüntüle
    special ve havale değerlerini yukarıda number format yaparak işlem yaparak deneyebilirsin.
    Cevabınız için teşekkürler.Malesef çözüm olmadı 4 haneli ayarlayınca 3 haneli bozuluyor 3 haneli ayarlarınca 4 haneli bozuluyor.
  • 20-04-2019, 21:50:06
    #4
    Hatalı çıktı aldığın $special değerlerini yazabilir misin hocam?
  • 20-04-2019, 21:58:57
    #5
    hocam 3 yerine 2 yazarmısınız

    birde echodan sonra parantez açmayın echo number_format şeklinde yazın
  • 20-04-2019, 22:04:27
    #6
    mtn adlı üyeden alıntı: mesajı görüntüle
    Hatalı çıktı aldığın $special değerlerini yazabilir misin hocam?
    Mesela benim 1.400,00 Tl'lik ürünüm var direk değişkenim bu <?php echo $special; ?> bu rakamı tam olarak veriyor ben bunun %5ini alıp bu rakamdan cıkartıp ekrana yazdırmak istiyorum ama bu sorunla karşılaşıyorum.Bunun başka bir yöntemi yok mudur?
    U_uR adlı üyeden alıntı: mesajı görüntüle
    hocam 3 yerine 2 yazarmısınız

    birde echodan sonra parantez açmayın echo number_format şeklinde yazın
    bu sefer 3 haneli rakamlarda sorun yok mesela 275,00TL 'lik ürün 261,25 TL olarak görünüyor ama, 2.450,00TL 'lik ürün 2,33 TL olarak görünüyor.
    Diğer dediğinizide denedim olmadı malesef
  • 20-04-2019, 22:20:43
    #7
    Muhtemelen hatanız gelen $special değişkenine ait değerde (muhtemelen string olarak geliyor fiyat değeri). Numeric olmadığı için php bazı durumlarda doğru formatlayamıyor. (normalde tipi numeric olmasa da php string değeri numeric formata convert edebiliyor ama ondalık değerler işin içine girince yanlış çıktı verebiliyor)

    Şöyle bir satır ekleyerek tekrar kontrol edebilir misiniz?

    $special = (float)str_replace(',', '.', str_replace('.', '', $special));

    Bu arada ondalık rakamlarla çalışan arkadaşlar için bir tavsiyem olsun lütfen hesaplama kısmını derleyiciye ya da veritabanına yaptırtmayın bunun yerine ondalık rakamınızı kapsayacak şekilde integer değer tutun. örn: 2,50 TL lik ürünün fiyat değerini (int)250 olarak, 3500,50 TL lik ürünün fiyatını (int)350050 olarak tutarak ve işlem yapmanızı tavsiye ederim.
  • 20-04-2019, 22:29:24
    #8
    Kaç satır uğratığım şeyi tek satır kodla çözdük çok teşekkür ederim ellerine sağlık.
    mtn adlı üyeden alıntı: mesajı görüntüle
    Muhtemelen hatanız gelen $special değişkenine ait değerde (muhtemelen string olarak geliyor fiyat değeri). Numeric olmadığı için php bazı durumlarda doğru formatlayamıyor. (normalde tipi numeric olmasa da php string değeri numeric formata convert edebiliyor ama ondalık değerler işin içine girince yanlış çıktı verebiliyor)

    Şöyle bir satır ekleyerek tekrar kontrol edebilir misiniz?

    $special = (float)str_replace(',', '.', str_replace('.', '', $special));
    Bu arada ondalık rakamlarla çalışan arkadaşlar için bir tavsiyem olsun lütfen hesaplama kısmını derleyiciye ya da veritabanına yaptırtmayın bunun yerine ondalık rakamınızı kapsayacak şekilde integer değer tutun. örn: 2,50 TL lik ürünün fiyat değerini (int)250 olarak, 3500,50 TL lik ürünün fiyatını (int)350050 olarak tutarak ve işlem yapmanızı tavsiye ederim.