• 31-10-2014, 19:29:36
    #1
    Merhabalar,
    veritaabanında decimal olan veriyi çektigimde hata alıyorum.

    sebebi ise formatının

    1,350.00

    şeklinde olması

    eğer 1350 olarak yazarsam sorunsuz kdv çıkıyor ne yapmam lazım acaba?

    <html>
    <body>
    <?php
    $fiyat='1,350.00';
    $kdv=18;
    
    $kdvhesap=$fiyat*$kdv/100;
    $aratoplam=$fiyat+$kdvhesap;
    
    echo "kdv dahil=$aratoplam";
    ?>
    </body>
    </html>
  • 31-10-2014, 20:04:13
    #2
    Üyeliği durduruldu
    1,350 demek 1 tam binde 350 demek değil mi ?
    bence zaten ilk yaptığın yanlış.
  • 31-10-2014, 20:14:38
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Tavsiye : Kdv yi 1.18 yap direk fiyat ile çarp.

    Sorun: 1,350.00 yerine 1.350,00 olarak değiştirirsen sorun düzelir.
    Para birimlerine göre nokta ve virgül farklılık gösterir mesela TL için 1.350,00 TL dir. Dolar için Usd 1,350.00 $ dir.
  • 01-11-2014, 01:12:33
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @nurettin; money_format fonksiyonu Windows'ta çalışmamaktadır.

    <?php
    
    	setlocale(LC_ALL, 'tr_TR.UTF-8');
    
    	$fiyat = '1,350.00';
    	$kdv = 18;
    
    	$fiyat = str_replace(',', '', $fiyat);
    
    	settype($fiyat, 'float');
    
    	$kdvhesap = $fiyat * $kdv / 100;
    
    	$aratoplam = $fiyat + $kdvhesap;
    
    	$aratoplam = trim(str_replace('try', '', strtolower(money_format('%i', $aratoplam))));
    
    	echo 'KDV Dahil:' . $aratoplam;
  • 01-11-2014, 11:00:33
    #5
    Ondalık ayraç olarak virgül Turkiye ve birkac yerde yaygın olarak kullanılsa da dünyanın tamamı diyebileceğimiz bir büyüklükteki kısmı ondalık ayraç olarak nokta kullanır ve uluslar arası standart olarak bu oturmuş durumdadır. Bu standardı ISO 31-0 belirler. Virgül binlik ayraç olarak gosterimde okuma kolayligi icin kullanilir ancak bilgisayarda veri işlerken ve veri saklarken bunu kullanmayiz. Sizin yapmanız gereken bu veriyi veri tabanında tutarken varchar gibi bir text formatında tutmak yerine decimal formatta tutmaniz gerekir. Hesaplamaları yaptıktan sonra da gösterin sırasında dilerseniz görsel okuma kolaylığı sağlayacak bir ekleme ile yapabilirsiniz. Bunun için printf fonksiyonunu incelemenizi öneririm.

    http://www.iso.org/schema/isosts/v1.0/doc/n-cdf0.html

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 11:00:33 -->-> Daha önceki mesaj 10:53:51 --

    Bu tarz uyuşmazlık sorunları özellikle isin içine windows girdiğinde yaşanmaktadır. Windows on tanımlı olarak sistemlerinde verileri ondalık ayraç olarak virgül ile tutar. Windows dışındaki bütün platformlar ve programlama dillerinde bu ayraç noktadır. Bu nedenle windows ortamında çalışan bir uygulama yazılırken bu konuya ayrıca dikkat etmek gerekir. Zira veri uyuşmazlıkları windows nedeniyle çok fazla yaşanmaktadır.

    Özetle windows kullanmayın, windows ortamında geliştirme yapmayın, yapıyorsanız da Microsoft un belirlediği ilginç standartlar nedeniyle dünyanın geri kalaniyla sorun yaşayabileceğinizi unutmayin hele ki bu uygulama cross-platform bir uygulama olacaksa vay halimize

    http://en.m.wikipedia.org/wiki/ISO_31-0
  • 01-11-2014, 12:27:57
    #6
    saintx adlı üyeden alıntı: mesajı görüntüle
    @nurettin; money_format fonksiyonu Windows'ta çalışmamaktadır.

    <?php
    
    	setlocale(LC_ALL, 'tr_TR.UTF-8');
    
    	$fiyat = '1,350.00';
    	$kdv = 18;
    
    	$fiyat = str_replace(',', '', $fiyat);
    
    	settype($fiyat, 'float');
    
    	$kdvhesap = $fiyat * $kdv / 100;
    
    	$aratoplam = $fiyat + $kdvhesap;
    
    	$aratoplam = trim(str_replace('try', '', strtolower(money_format('%i', $aratoplam))));
    
    	echo 'KDV Dahil:' . $aratoplam;
    http://php.net/manual/tr/function.number-format.php

    fonksiyonu daha temiz bir çözüm