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.
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';