• 14-08-2023, 11:55:45
    #10
     sprintf('%.4f', "250.2000");
  • 14-08-2023, 11:55:46
    #11
    Batuhan Ustun adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadaşlar. Bir PHP Sorusu ile karşınızdayım.
    Bir numara değerimiz var. Bunu Bakiye olarak değerlendirelim. Bu bakiye değeri 10.0000 olarak gönderiyoruz. Noktadan sonra 4 hane olacak şekilde decimal değer olarak veriyoruz.
    Fakat PHP' nin genel yapısı gereği 250.2000 ile 250.20 hatta 250.2 aynı sayıdır. Bu sebeple sıfırları kesiyor.
    Sıfırları kesmemesi için kullandığımız her yöntem, bakiye değerini String formatta çevirmektedir. Sayısal değer olarak kalmasını ve hiçbir şekilde string fonksiyonları kullanılarak değişmemesini istiyoruz.

    Kullandığımız yöntemler arasında, number_format, sprintf var. Ayrıca Chatcpt gibi cevaplar da denendi. Daha PHP'nin derinlerine inmek istiyoruz.
    bakiye değerini string olarak gönderip alın matematiksel işlemler için floatval fonksiyonunu kullanın.
    $var="10.0000";
    sayısal işlem yapmak için floatval($var);
    sonra tekrar float to string e dönmek için
    number_format($value, 4, '.', ''); kullanabilirsiniz.
  • 14-08-2023, 11:57:20
    #12
    Sistemin icinde PHP Engine bazinda (Zend) bahsettiginiz olayin direkt bir cozumu yok, bahsettiginiz islemi 100.000'lik parcalara bolerek ya da carparak yapmaniz nihai cozum olur ya da string olarak mysql uzerinde tutup bcmath kutuphanesini de kullanabilirsiniz ancak bu benim onerecegim bir cozum olmaz.

    Ilk durum icinse virgulden sonra 5 basamaga ihtiyaciniz oldugunu dusunerek 612.60000 seklinde bir sayimiz oldugunu dusunelim ve bunu insert ederken 100 binle carpip insert edelim, select'te ise 100 bine bolerek getirelim.
  • 14-08-2023, 12:14:42
    #13
    marzenbecher adlı üyeden alıntı: mesajı görüntüle
    Sistemin icinde PHP Engine bazinda (Zend) bahsettiginiz olayin direkt bir cozumu yok, bahsettiginiz islemi 100.000'lik parcalara bolerek ya da carparak yapmaniz nihai cozum olur ya da string olarak mysql uzerinde tutup bcmath kutuphanesini de kullanabilirsiniz ancak bu benim onerecegim bir cozum olmaz.

    Ilk durum icinse virgulden sonra 5 basamaga ihtiyaciniz oldugunu dusunerek 612.60000 seklinde bir sayimiz oldugunu dusunelim ve bunu insert ederken 100 binle carpip insert edelim, select'te ise 100 bine bolerek getirelim.
    Maalesef gelen mesajlar doğrultusun da denedik fakat bunun PHP davranışına uygun olmayan bir istek olduğunu anladık. Herhangi bir çözümü yok sanırım bu konunun.
  • 14-08-2023, 14:26:16
    #14
    sonunda ek olarak 1 eklersen 10.000001 sorunun çözülebilir hale gelebilir. o 1i tekrar kaldıracaksın işlemler sonrası tam olarak ne yaptığını anlamadım ama nokta sonrası bölümüde ayrıca temp alanına ayırıp işlem sonrası sol tarafa ekleyebilirsin. 10,000001 hesap makinesine virgül koyup 1 ekleyince sıfırları kesmiyor çarpıya vs basınca.
  • 14-08-2023, 14:58:16
    #15
    decimal'i ayrı tutmak dışında bi çözümü yok.