|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2000-12-04 13:08 UTC] hh at loca dot net
Changing the locale setting to a country that uses comma (,)
as the decimal seperator will stip off decimal places from
the float value in printf/sprintf. Example:
MySQL table:
create table test (
name varchar(100),
value float(16,2)
);
insert into test values ('bla', 3.789);
PHP code:
setlocale("LC_ALL", "de_DE");
// mysql_connect etc.
$row = mysql_fetch_array($result);
printf("%s: %.2f",
$row["name"], $row["value"]);
Result:
bla: 3.00
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 03:00:02 2025 UTC |
Version: 5.1.6 Linux 2.4. Don't know exactly which Linux, it's the one on 1&1. I encountered this bug on 5.1.6 but I can't test on 5.2. Since this bug seems old and has been closed all this time I guess it isn't fixed yet. It works probably on all locales enabled systems. But maybe not. I won't be able to test it because I don't have the LC_NUMERIC locales and don't really know how to install them on NetBSD. However I can help you reproduce this bug. You need to use a locale from a country that uses comma (,) as the decimal seperator, as said hh before. You must have all the locale category installed (but LC_NUMERIC is probably the only one really needed). You only have to do this: <?php setlocale(LC_ALL, 'fr_FR'); // or 'de_DE' or others, too printf('%.2f', 42.4242); ?> This will print "42.00".