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.
ödüllü php sorusu (300₺)
14
●832
- 14-08-2023, 10:32:34
- 14-08-2023, 10:36:02Batuhan Ustun adlı üyeden alıntı: mesajı görüntüle
Amaç veritabanında saklamak değilse, aşağıdaki işinizi görür mü?
function addBakiye($bakiyeStr, $additionStr) { $bakiye = rtrim($bakiyeStr, '0'); // Sağdaki sıfırları kes $addition = rtrim($additionStr, '0'); $result = bcadd($bakiye, $addition, 4); // Büyük sayılar için hesaplama fonksiyonu return $result; } $bakiyeString = '250.2000'; $eklenecekString = '50.3000'; $newBakiye = addBakiye($bakiyeString, $eklenecekString); echo $newBakiye; // Output: 300.5000Sonrasında da strval yapılabilir.
Eğer sondaki sıfırlar yine de siliniyorsa, projedeki sıfır sayısı da değişken değil ise. Şöyle yapabilirsiniz: echo strval($newBakiye).'000'; - 14-08-2023, 10:36:30<?php
function formatFiyat($fiyat) {
setlocale(LC_ALL, 'tr_TR.UTF-8');
return
number_format($fiyat, 2, ',', '.'); }
$fiyat = $geometry['coordinates'][2];
$parcaliFiyat = formatFiyat($fiyat); ?> - 14-08-2023, 10:39:35Fiyatları kuruş cinsinden saklayıp gerekli yerlerde formatlayın.
Mesela 456.50 TL lik bakiyeyi veritabanında 45650 olarak saklayın. - 14-08-2023, 10:39:46lookout adlı üyeden alıntı: mesajı görüntülePrometheussq1 adlı üyeden alıntı: mesajı görüntüle
Php yapısı gereği number format kullanıldığında response isteği sonucunda string olarak dönüyor. Number format sonrasında floatval, float gibi fonksiyonlarda işe yaramıyor.
Veriyi geri almak istediğimde 456.5 olarak dönüyor sondaki 0'ı gereksiz alarak siliyor.LastPlayer adlı üyeden alıntı: mesajı görüntüle - 14-08-2023, 10:42:40Anlatamadım galiba veritabanında 456.50 TL lik veriyi 45650 olarak saklayın ve gerekli yerlerde göstermek için bölün gerektiği zaman.Batuhan Ustun adlı üyeden alıntı: mesajı görüntüle
- 14-08-2023, 10:48:50lookout adlı üyeden alıntı: mesajı görüntüle

Maalesef tırnak içerisinde.
Sorunda burdan kaynaklı bölme işlemini sonucunda istediğim formatta döndürmek için number format kullanmak gerekiyor.LastPlayer adlı üyeden alıntı: mesajı görüntüle - 14-08-2023, 11:28:55
<?php $stringValue = "300.5000"; $integerValue = (int) str_replace('.', '', $stringValue); echo $integerValue; // 3005000 ?>Zaten integer olan bir değer'de nokta (.) kullanamassınız.
--Ekleme
Float olan bir değerde de sıfırlara müdahale edemezsiniz. PHP matematiksel olarak düşündüğü ve işlem yapması gerektiği için her türlü sıfır silinir. Kodunuzu inceleyip kütüphaneler eklemeler kaçak yöntemler kullanabilir. Tüm kodu görmeden net cevap vermemekle beraber PHP olarak düşündüğümüzde dediğiniz yöntemi yapmak zorlama olur biraz.

.