• 07-05-2024, 15:47:45
    #1
    Merhaba ArkadaÅŸlar

    Şöyle bir sorunum var aşağıdaki fonksiyonda exchange yapmaya çalışıyorum ancak arka plandan 100 tl kargo bedeli girdiğimde ön kısma 100.23 şeklinde yansıyor o 23 kuruşun bir türlü nereden geldiğini bulamadım.
    Size hata nereden kaynaklanıyor olabilir? Nerede hata yapıyorum ? yardım ederseniz sevinirim.

    public function exchange($price, $baseCurrency, $toBeExchanged)
        {
            $formatted = number_format($this->list[$baseCurrency->getCode()]->getExchangeRates()[$toBeExchanged->getCode()]->getRate(),2);
            $a = $price * $formatted;
            return $a;
    
        }
  • 07-05-2024, 15:48:45
    #2
    Yapay zekaya sorun daha hızlı yanıt alırsınız
  • 07-05-2024, 15:49:45
    #3
    fermayil adlı üyeden alıntı: mesajı görüntüle
    Yapay zekaya sorun daha hızlı yanıt alırsınız
    hocam yapay zekaya sorduk yetmedi bilgisi sanırım yada tam anlatamadık

    böyle bir cevap verdi


    Alıntı
    Bu durum, float işlemlerinde doğruluk kaybına neden olabilir. Float sayılar, bilgisayar belleğinde tam olarak temsil edilemeyen ondalık sayılardır. Bu nedenle, matematiksel işlemler sırasında doğruluk kaybı yaşanabilir ve beklenmeyen sonuçlar elde edilebilir.
    Eğer kargo bedeli gibi paranın hassas olduğu değerlerle işlem yapılıyorsa, float yerine sabit noktalı sayılar kullanmak daha güvenli olabilir. Örneğin, PHP'nin bcmul() fonksiyonu gibi sabit noktalı aritmetik işlemler için özel fonksiyonlar kullanılabilir.
    Aşağıdaki örnek, bcmul() fonksiyonunu kullanarak exchange fonksiyonunuzu nasıl güvenli bir şekilde düzeltebileceğinizi gösteriyor:

    public function exchange($price, $baseCurrency, $toBeExchanged)
    { $rate = $this->list[$baseCurrency->getCode()]->getExchangeRates()[$toBeExchanged->getCode()]->getRate(); // Sabit noktalı sayılarla işlem yapmak için bcmul() fonksiyonunu kullanın $result = bcmul($price, $rate, 2); return $result; }
    Bu kod parçasında, bcmul() fonksiyonu, sabit noktalı aritmetik yapmak için kullanılır. Üçüncü parametre olan 2, sonucun iki ondalık basamakla sınırlanmasını sağlar. Bu sayede, float işlemlerinden kaynaklanan doğruluk kaybı minimuma indirilir ve beklenmedik sonuçlar önlenir.
  • 07-05-2024, 15:50:30
    #4
    Fonksiyondaki deÄŸiÅŸkenleri deÄŸil , deÄŸiÅŸkenlerin hangi deÄŸer geldiÄŸini iletirseniz daha iyi olur
  • 07-05-2024, 15:51:48
    #5
    HizliResim.Net
    Yazılımcı değilim ama tüccarım

    Kolayı var 99,77 TL kargo bedeli gir olmaz mı
  • 07-05-2024, 15:53:13
    #6
    MuratCENGEL adlı üyeden alıntı: mesajı görüntüle
    hocam yapay zekaya sorduk yetmedi bilgisi sanırım yada tam anlatamadık

    böyle bir cevap verdi
    https://chat.openai.com/share/c3dbea...f-3bd12c9ca340 bunu dene
  • 07-05-2024, 15:54:13
    #7
    Engin adlı üyeden alıntı: mesajı görüntüle
    Yazılımcı değilim ama tüccarım

    Kolayı var 99,77 TL kargo bedeli gir olmaz mı
    Engin abi valla gelince göstercem ben sana seni illa götüreceğim o malum mekana öyle tüccarlık mı olur
  • 07-05-2024, 15:54:46
    #8
    Engin adlı üyeden alıntı: mesajı görüntüle
    Yazılımcı değilim ama tüccarım

    Kolayı var 99,77 TL kargo bedeli gir olmaz mı
  • 07-05-2024, 15:55:37
    #9
    www.sabamedya.com
    Bu fonksiyonda $baseCurrency ve $toBeExchanged bunun neleri temsil ettiğine bakmak lazım.