• 20-12-2017, 00:48:37
    #1
    Merhaba,
    Nokta ve virgüllü toplama işlemi yapmak istiyorum fakat doğru sonucu alamadım bir türlü.
    Bu tip işlemlerde sizlerin izlediği yol nasıl oluyor.
    örneğin:
    $a='1.281,66'; $b='1.301,20'; $c='1.199,30'; echo $a+$b+$c;
    3.782,16 olarak sonuç çıkması gerekiyorken 378100 şeklinde çıkıyor.
    Bu hesaplamayı number_format, money_format fonksiyonları dahi mysql SUM olarak ta denediysem en doğru sonucu alamadım.
    Küsuratlar önemli olduğundan 3.782,16 şekilde nasıl alabilirim?
  • 20-12-2017, 01:18:35
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    <?php
    $a='1281.66'; 
    $b='1301.20';
    $c='1199.30';
    echo number_format($a+$b+$c, 2, ',', '.');
    ?>
    şöyle yaparsan istediğin sunucu elde edersin
  • 20-12-2017, 01:42:09
    #3
    Feaxer adlı üyeden alıntı: mesajı görüntüle
    <?php
    $a='1281.66'; 
    $b='1301.20';
    $c='1199.30';
    echo number_format($a+$b+$c, 2, ',', '.');
    ?>
    şöyle yaparsan istediğin sunucu elde edersin
    Arada ki noktayı kırpacağız yani
    $a='505,55'; 
    $b='1301.20';
    $c='1199.30';
    echo number_format($a+$b+$c, 2, ',', '.');
    peki bunu üstteki gibi yaparsak yine net sonuç alamadık hesap: 3.006,05 ama sonuç: 3.005,50 bu
  • 20-12-2017, 01:58:11
    #4
    <?php
    $a='505.55';
    $b='1301.20';
    $c='1199.30';
    echo number_format($a+$b+$c, 2, ',', '.');
    ?>
    hocam 505,55 şeklinde girmişsiniz virgüllü o yüzden saatde geç olunca tabi.

    https://www.youtube.com/watch?v=L5EyrTe6Eh4
  • 20-12-2017, 02:09:20
    #5
    Aslında yanlış girmedim
    Biliyorsunuzdur parasl işlemlerde iki yada üç haneli rakamlar virgül ile sonrası nokta ile ayrışıyor.
    Yani 55,10 yada 555,10 şeklinde ondalık yuvarlama bu şekilde yapılıyor.
    1,255.10 olarakta küsüratlı işlem. Tabi nokta yerine virgül koyunca benim söylediğim gibi yanlış hesap çıktı.
    şimdi burada str_replace ile virgülü kaldırıp nokta ile değiştirsek diğer rakamlarda sorun oluşabilir.
    Bu iki üç hane arasına nokta koyup diğer küsuratlardan noktayı kaldırıp birleştirebilecek ve dediğimiz gibi bir sonuç elde edebilecek bir fonksiyon yapabilirmiyiz? Bu benim gibi küsuratlı işlem yapanların hepsine kökten bir çözüm olur sanırım.
  • 20-12-2017, 03:36:53
    #6
    <?php
    function hesap($sayi){
        if(!is_array($sayi)) return false;
        $toplam = 0;
        foreach($sayi as $say){
            // noktaları yoket
            $say = str_replace(".","",$say);
            // virgülleri noktaya çevir ve double tipine typecast et
            $say = (double)str_replace(",",".",$say);
            $toplam += $say;
        }
        return number_format($toplam, 2, ',', '.');
    }
    echo hesap([
    "1.281,66",
    "1.301,20",
    "1.199,30"
    ]);
  • 20-12-2017, 16:25:07
    #7
    onurkun adlı üyeden alıntı: mesajı görüntüle
    <?php
    function hesap($sayi){
        if(!is_array($sayi)) return false;
        $toplam = 0;
        foreach($sayi as $say){
            // noktaları yoket
            $say = str_replace(".","",$say);
            // virgülleri noktaya çevir ve double tipine typecast et
            $say = (double)str_replace(",",".",$say);
            $toplam += $say;
        }
        return number_format($toplam, 2, ',', '.');
    }
    echo hesap([
    "1.281,66",
    "1.301,20",
    "1.199,30"
    ]);
    Evet bu çok iyi oldu. Emeğine sağlık onurkun.