Problem: Bir sayınız var ve binlik ve ondalık ayraçlar ile yazdırmanız gerekiyor. Örneğin, sayfayı görüntüleyenlerin sayısını veya anketteki bir seçeneğe oy verenlerin yüzdesini görüntülemek istiyorsunuz.
Çözüm: Her zaman ondalık nokta olarak belirli karakterlere ve binlik ayracına ihtiyacınız varsa, number_format()
fonksiyonunu kullanın:
$number = 1234.56; // $formatted1 is "1,235" - 1234.56 gets rounded up and , is // the thousands separator"); $formatted1 = number_format($number); // Second argument specifies number of decimal places to use. // $formatted2 is 1,234.56 $formatted2 = number_format($number, 2); // Third argument specifies decimal point character // Fourth argument specifies thousands separator // $formatted3 is 1.234,56 $formatted3 = number_format($number, 2, ",", ".");
Belirli bir yerel ayar için uygun biçimler oluşturmanız gerekirse, NumberFormatter
kullanın:
$number = '1234.56'; // $formatted1 is 1,234.56 $usa = new NumberFormatter("en-US", NumberFormatter::DEFAULT_STYLE); $formatted1 = $usa->format($number); // $formatted2 is 1 234,56 // Note that it's a "non breaking space (\u00A0) between the 1 and the 2 $france = new NumberFormatter("fr-FR", NumberFormatter::DEFAULT_STYLE); $formatted2 = $france->format($number);
number_format()
işlevi, bir sayıyı ondalık ve binlik ayraç ile biçimlendirir. Varsayılan olarak, sayıyı en yakın tam sayıya yuvarlar. Sayının tamamını korumak istiyorsanız, ancak sayınızdaki ondalık basamağın uzunluğunu önceden bilemiyorsanız, şunu kullanın:
$number = 31415.92653; // your number list($int, $dec) = explode('.', $number); // $formatted is 31,415.92653 $formatted = number_format($number, strlen($dec));
Intl
uzantısının bir parçası olan NumberFormatter
sınıfı, ICU kütüphanesinin geniş formatlama kurallarını kullanır. Hatta bir kelimeyi hecelemek gibi süslü şeyler bile yapabilirsiniz:
$number = '1234.56'; $france = new NumberFormatter("fr-FR", NumberFormatter::SPELLOUT); // $formatted is "mille-deux-cent-trente-quatre virgule cinq six" $formatted = $france->format($number);