Path: csiph.com!xmission!news.snarked.org!news.linkpendium.com!news.linkpendium.com!panix!usenet.stanford.edu!not-for-mail From: =?UTF-8?B?TMOpYSBHcmlz?= Newsgroups: gnu.bash.bug Subject: Re: built-in printf %f parameter format depend on LC_NUMERIC Date: Tue, 9 Jul 2019 21:39:41 +0200 Lines: 132 Approved: bug-bash@gnu.org Message-ID: References: <5d24be33.1c69fb81.59c43.fe4dSMTPIN_ADDED_BROKEN@mx.google.com> <6468b45e-5b4a-8edf-4ab8-0838843beaaf@noiraude.net> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="kdjk0xQ2xFfFj7ethSU18FpjxubKIh7Hi" X-Trace: usenet.stanford.edu 1562701205 6443 209.51.188.17 (9 Jul 2019 19:40:05 GMT) X-Complaints-To: action@cs.stanford.edu To: chet.ramey@case.edu, bug-bash@gnu.org Envelope-to: bug-bash@gnu.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=noiraude.net; s=noiraude; h=Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Sender:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=RwukVhVqDFV0AjZICfTIbYZgmfvyF8rAKy/QEy2kc6I=; b=pVNJBSzmwAbNHN5uXsAtKBz0u V4+QAfEDIxlHA9qfgCtQSgxvfe+UF5S7dqV8m2WiO2Fnhu/ka987KzLEVJzg9bB09Gva29pUYrlU0 AM/dpzeaAC85icA9ff/b445yxh66lPSlDCDcCNgS7ufxkevyTJhQhLZwXOUaT1AjwHpR1Siylop/z BLMOx5k7/eCBOZRvzgrXp93LnGdo2vYSEyPtMXUl/12LD9xQj38pvGDvONsJKUOws7QA5jAHANYdT qVHI20vZGmZYY6mCN+PmkKj30zIJuvBb+Z8tTQBwODW770Oa995tDMQyixYt5W6lu3v/M/8vtg/4S gKU7Nf62A==; Openpgp: id=2A931E283F202EE5BFCC4F7070946F168078ED52; url=https://www.noiraude.net/8078ED52.asc Autocrypt: addr=lea.gris@noiraude.net; prefer-encrypt=mutual; keydata= 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 I3KbDCDuQHywEBQ= User-Agent: Telnet/1.0 [tlh] (PDP11/DEC) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:910:10c6:1::1 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <6468b45e-5b4a-8edf-4ab8-0838843beaaf@noiraude.net> X-Mailman-Original-References: <5d24be33.1c69fb81.59c43.fe4dSMTPIN_ADDED_BROKEN@mx.google.com> Xref: csiph.com gnu.bash.bug:15105 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --kdjk0xQ2xFfFj7ethSU18FpjxubKIh7Hi Content-Type: multipart/mixed; boundary="F0eMZ3toxxGLFRsvsaPEskqEWckhbj2Ju"; protected-headers="v1" From: =?UTF-8?B?TMOpYSBHcmlz?= To: chet.ramey@case.edu, bug-bash@gnu.org Message-ID: <6468b45e-5b4a-8edf-4ab8-0838843beaaf@noiraude.net> Subject: Re: built-in printf %f parameter format depend on LC_NUMERIC References: <5d24be33.1c69fb81.59c43.fe4dSMTPIN_ADDED_BROKEN@mx.google.com> In-Reply-To: --F0eMZ3toxxGLFRsvsaPEskqEWckhbj2Ju Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Le 09/07/2019 =C3=A0 20:28, Chet Ramey =C3=A9crivait=E2=80=AF: > On 7/9/19 11:26 AM, lea.gris@noiraude.net wrote: >=20 >> Bash Version: 5.0 >> Patch Level: 3 >> Release Status: release >> >> Description: >> When formatting floating point numbers in Bash's built-in >> printf with %s, the argument format depends on the LC_NUMERIC= >> environment variable. >=20 > As POSIX requires: >=20 > http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html= #tag_07_03_04 >=20 > The `decimal_point' member of the LC_NUMERIC category defines the radix= > character in floating point numbers, for both input and output. > This depends on the behavior of strtold/strtod. POSIX requires strtod t= o > honor the radix character as defined in LC_NUMERIC. Since LC_NUMERIC > determines the radix character for input and output, it looks like `bc'= > is not POSIX conformant. So many different behaviors of the printf '%f' $floatnum is a minefield. $ locale -ck decimal_point LC_NUMERIC decimal_point=3D"," GNU coreutils 8.30 printf input POSIX/C's LC_NUMERIC format, but output=20 locale setting's LC_NUMERIC format $env printf --version printf (GNU coreutils) 8.30 $ env printf '%f\n' 0.5 0,500000 $ env printf '%f\n' 0,5 printf: =C2=AB0,5=C2=BB=C2=A0: valeur non compl=C3=A8tement convertie 0,000000 Whereas Bash printf both input and output to locale setting's LC_NUMERIC = format. Given bc is a language and thus has to stick to a constant=20 representation of floating-point numbers, it has good reasons to use a=20 decimal point rather than varying floating point numbers format with=20 locale settings. It appears more logical that printf that does formatting, outputs=20 accordingly to the locale settings while handling its parameters with=20 the POSIX or C locale decimal_point as does the GNU coreutils printf. It also greatly ease integration. I won't argument anymore on the merits of either behavior, although it=20 would be helpful and probably save Bash scripts writers some troubles,=20 if the specifics of %f with Bash's built-in printf %f format were=20 documented. I also note that while you says the Bash's built-in printf %f honour=20 LC_NUMERIC decimal_point=3D"," locale for input and output. I note that Bash's built-in printf %f or %d does not honour LC_NUMERIC=20 thousands_sep=3D"=E2=80=AF" when dealing with integers. $ printf '%f\n' '1 000 000' bash: printf: 1 000 000: nombre non valable 1,000000 locale -ck thousands_sep LC_NUMERIC thousands_sep=3D"=E2=80=AF" $ printf '%d\n' '1 000 000' bash: printf: 1 000 000: nombre non valable 1 --=20 L=C3=A9a Gris --F0eMZ3toxxGLFRsvsaPEskqEWckhbj2Ju-- --kdjk0xQ2xFfFj7ethSU18FpjxubKIh7Hi Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEKpMeKD8gLuW/zE9wcJRvFoB47VIFAl0k7X0ACgkQcJRvFoB4 7VJgXxAAzSNKvWhdjV82sxL1ON839Sb2B3D8wFMB6pydHnaMvWkn+MCzrxRB3pCm tkjPiqZ5msBqKIYsLGhQKGA0C2SudOH/pyNIx4/a+FUXX4Soblk+W4hce5rJleWy M6/jCVJ+JwwGQWqhaOYezcEsjpC8A3JTppP9CUq5k/VXvxOUkGktyb7GJD8mZ8/F Vy0VyEGLzVJU0vDTZfRm1PT5PfKq2YiuffPybcDiEJO26y2AUp/fdKAIC9bpGYhj KBOrjzZOfFKMUEqFWhmV7c+niy8aS28Nn2nBbQl64jLZ9iHKgwCVE8uNH5dw8HVz 14+SCq9oRzOMCfgv71Qh2RTNb+gzF3FZu9cDoKJp2oLE0FqRgmLN2BlUksKTpC4D zE8DibgGwVtL0zi/ldNfC1hd+zkCd+f3ZyPhWalKBmQo37sdnTg8pk9rXxCCvv4w etIin6+1aqg97eW/iAdL7T9GIrZCIArlgOT5gSaL7UJlEzMov0vvgBG+YbWU6cV3 kymXzt88Qr9GHpeIY9odvLTr6biAVcFQs7bZpmEdF8Im1f8iasBivvZ+NTNiPo+B sG+1uw3xxamKDuGnj01r/3d1GZ168bmBleYGwF1YKkGi3ibyhKffHhMt6seoy1ft tqlIxKd8dzX3DLjsecWyN1Bhu3HVHmbQKTwNfa44+9CZ3k7eSLs= =8nK+ -----END PGP SIGNATURE----- --kdjk0xQ2xFfFj7ethSU18FpjxubKIh7Hi--