From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Martin Michel Newsgroups: gmane.lisp.guile.bugs Subject: bug#24990: Wrong formatted output with 'number->locale-string' Date: Tue, 22 Nov 2016 22:48:01 +0100 Message-ID: <20161122214801.GA20536@remote.famic.de> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: blaine.gmane.org 1479852632 29253 195.159.176.226 (22 Nov 2016 22:10:32 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 22 Nov 2016 22:10:32 +0000 (UTC) User-Agent: Mutt/1.5.21 (2010-09-15) To: 24990@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Tue Nov 22 23:10:28 2016 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9JGm-0007F1-97 for guile-bugs@m.gmane.org; Tue, 22 Nov 2016 23:10:28 +0100 Original-Received: from localhost ([::1]:58220 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9JGp-00021V-OK for guile-bugs@m.gmane.org; Tue, 22 Nov 2016 17:10:31 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47362) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9JFR-0001I9-Fi for bug-guile@gnu.org; Tue, 22 Nov 2016 17:09:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c9JFO-00022y-85 for bug-guile@gnu.org; Tue, 22 Nov 2016 17:09:05 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:51488) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1c9JFO-00022Q-4O for bug-guile@gnu.org; Tue, 22 Nov 2016 17:09:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1c9JFN-0002uh-Qj for bug-guile@gnu.org; Tue, 22 Nov 2016 17:09:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Martin Michel Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Tue, 22 Nov 2016 22:09:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 24990 X-GNU-PR-Package: guile X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-guile@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.147985250311139 (code B ref -1); Tue, 22 Nov 2016 22:09:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 22 Nov 2016 22:08:23 +0000 Original-Received: from localhost ([127.0.0.1]:38654 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9JEk-0002ta-LA for submit@debbugs.gnu.org; Tue, 22 Nov 2016 17:08:23 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:52742) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9IvL-0002Lg-Se for submit@debbugs.gnu.org; Tue, 22 Nov 2016 16:48:20 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c9IvF-00081c-O0 for submit@debbugs.gnu.org; Tue, 22 Nov 2016 16:48:14 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:57520) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c9IvF-00081V-L0 for submit@debbugs.gnu.org; Tue, 22 Nov 2016 16:48:13 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43711) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9IvE-0004ct-At for bug-guile@gnu.org; Tue, 22 Nov 2016 16:48:13 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c9Iv9-0007x8-DE for bug-guile@gnu.org; Tue, 22 Nov 2016 16:48:12 -0500 Original-Received: from euve32322.vserver.de ([85.25.48.132]:48824 helo=famic.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9Iv8-0007wL-TT for bug-guile@gnu.org; Tue, 22 Nov 2016 16:48:07 -0500 Original-Received: from remote.famic.de (ipbcc20513.dynamic.kabel-deutschland.de [188.194.5.19]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by famic.de (Postfix) with ESMTPSA id B35282E0F92 for ; Tue, 22 Nov 2016 22:48:03 +0100 (CET) Content-Disposition: inline X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Mailman-Approved-At: Tue, 22 Nov 2016 17:08:21 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:8471 Archived-At: Hi there, I want to report a bug in the format module using different locales. It seems that 'number->locale-string' and 'monetary-amount->locale-string' are broken. Please see below emails sent to the guile-users mailing list how to reproduce the behaviour. The Guile version I used was 2.0.13. Thanks, -Martin ----- Forwarded message from Vladimir Zhbanov ----- Date: Mon, 14 Nov 2016 09:03:19 +0300 From: Vladimir Zhbanov To: dev@famic.de Subject: Re: Formatted output with locale Hi Martin, On 11/13/16, dev@famic.de wrote: > Hi there, > I have problems to get a proper formatting using the (ice-9 format) > module. In my code, I need to deal with monetary figures, but I fail > to get the correct format for my German locale. > Let's say I have one hundred thousand Euros. The correct format to output > this in de_DE.utf-8 would be > 100.000,00 EUR > (with 2 decimals) > > Now I tried: > (setlocale LC_ALL "de_DE.UTF-8") > (use-modules (ice-9 format)) > (define a 100000.00) > (format #t "~12,2h EUR~%" a) > (format #t "~,,12$ EUR~%" a) > (format #t "~12,2f EUR~%" a) > > But this is what Guile gives to me: > 100.000,0 EUR > 100000.00 EUR > 100000.00 EUR > > None is correct. What did I miss? > -Martin Looking at the `format' code for option `h' I see the procedure `number->locale-string' is used. OK, let's do some experiments: scheme@(guile-user)> (setlocale LC_ALL) $2 = "ru_RU.UTF-8" scheme@(guile-user)> ,use (ice-9 i18n) scheme@(guile-user)> (number->locale-string 10.0 5) $3 = "10,0" scheme@(guile-user)> (number->locale-string .00003 2) $4 = "3,0e" scheme@(guile-user)> (number->locale-string .00003 1) $5 = "3,0" scheme@(guile-user)> (number->locale-string .00003 3) $6 = "3,0e-" scheme@(guile-user)> (number->locale-string .0 3) $7 = "-0,0" scheme@(guile-user)> (number->locale-string .0 10) $8 = "-0,0" scheme@(guile-user)> (number->locale-string .0 1) $9 = "-0,0" Now for the procedure monetary-amount->locale-string: scheme@(guile-user)> (monetary-amount->locale-string .0 #t) $10 = "-0.0 RUB " scheme@(guile-user)> (monetary-amount->locale-string 100000.0 #t) $11 = "100\xa0000.0 RUB " scheme@(guile-user)> (monetary-amount->locale-string .00003 #t) $12 = "3.0e RUB " And my guile version: scheme@(guile-user)> (version) $13 = "2.0.11" It seems `number->locale-string' is broken. If I do, e.g. (number->locale-string .00003 10) it yields "3,0e-5" If the last arg decreases, it just trims the number of characters after comma, which is wrong in this case. Output for zero is funny, too. Regards, Vladimir ----- End forwarded message ----- ----- End forwarded message -----