Subject: bug#7829: locale-related printf bug when using formats with thousands grouping character

From: Eric Blake <[email-masked]>
Date: Wed, 12 Jan 2011 06:58:19 -0700

[redirecting to bug-coreutils]

On 01/12/2011 06:52 AM, Eric Blake wrote:
>> bash-4.1$ printf "%'.2f\n" 999999.9998071828
>> ,000,000.00
>>
> It appears that glibc fails to account for the fact that rounding may
> increase the number of result characters by 2 instead of 1 when %' is in
> effect (going from 999 to 1,000, at any power of 10*3).
> 
> Please file a glibc bug, and in the meantime, gnulib should consider
> modifying the printf-posix family of modules to work around this
> rounding bug.

Ouch - coreutils' printf is also affected:

$ /usr/bin/printf %\'.2f\\n 999.9998 999999.9998 1000000
1000.00
,000,000.00
1,000,000.00

At least printf(1) already uses the xprintf-posix module, so hopefully
this gets fixed once gnulib works around the glibc bug.

-- 
Eric Blake   [email-masked]    +1-801-349-2682
Libvirt virtualization library http://libvirt.org