guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Formatted output with locale


From: Ludovic Courtès
Subject: Re: Formatted output with locale
Date: Thu, 17 Nov 2016 12:02:06 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Hi!

address@hidden skribis:

> 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

It seems to work as advertised for me:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,use(ice-9 i18n)
scheme@(guile-user)> (number->locale-string 10000.01 2 (make-locale LC_ALL 
"fr_FR.utf8"))
$13 = "10 000,01"
scheme@(guile-user)> (number->locale-string 10000.01 2 (make-locale LC_ALL 
"de_DE.utf8"))
$14 = "10.000,01"
scheme@(guile-user)> ,use(ice-9 format)
scheme@(guile-user)> (setlocale LC_ALL "de_DE.utf8")
$15 = "de_DE.utf8"
scheme@(guile-user)> (format #f "~12,2h" 10000.01)
$16 = "   10.000,01"
--8<---------------cut here---------------end--------------->8---

That’s on GNU/Linux (glibc 2.24).

Note that number formatting data comes from the C library.  What C
library do you use?

Thanks,
Ludo’.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]