mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 22:10:21 +02:00
i18n: Do not represent zero as "-0".
Partly fixes <http://bugs.gnu.org/24990>. Reported by Martin Michel <dev@famic.de>. * module/ice-9/i18n.scm (monetary-amount->locale-string): Don't negate AMOUNT when it's zero. (number->locale-string): Likewise. * test-suite/tests/i18n.test ("number->locale-string")["positive inexact zero, 1 digit"]: New test. ("monetary-amount->locale-string")["positive inexact zero"]: New test.
This commit is contained in:
parent
92222727f8
commit
19d274c680
2 changed files with 18 additions and 6 deletions
|
@ -1,6 +1,7 @@
|
|||
;;;; i18n.scm --- internationalization support -*- coding: utf-8 -*-
|
||||
|
||||
;;;; Copyright (C) 2006, 2007, 2009, 2010, 2012 Free Software Foundation, Inc.
|
||||
;;;; Copyright (C) 2006, 2007, 2009, 2010, 2012,
|
||||
;;;; 2017 Free Software Foundation, Inc.
|
||||
;;;;
|
||||
;;;; This library is free software; you can redistribute it and/or
|
||||
;;;; modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -335,7 +336,7 @@ locale is used."
|
|||
(substring dec 0 fraction-digits)
|
||||
dec)))))
|
||||
|
||||
(external-repr (number->string (if (> amount 0) amount (- amount))))
|
||||
(external-repr (number->string (if (>= amount 0) amount (- amount))))
|
||||
(int+dec (string-split external-repr #\.))
|
||||
(int (car int+dec))
|
||||
(dec (decimal-part (if (null? (cdr int+dec))
|
||||
|
@ -387,7 +388,7 @@ number of fractional digits to be displayed."
|
|||
(substring dec 0 fraction-digits)
|
||||
dec))))))
|
||||
|
||||
(let* ((external-repr (number->string (if (> number 0)
|
||||
(let* ((external-repr (number->string (if (>= number 0)
|
||||
number
|
||||
(- number))))
|
||||
(int+dec (string-split external-repr #\.))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
;;;; i18n.test --- Exercise the i18n API. -*- coding: utf-8; mode: scheme; -*-
|
||||
;;;;
|
||||
;;;; Copyright (C) 2006, 2007, 2009, 2010, 2011, 2012,
|
||||
;;;; 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
|
||||
;;;; 2013, 2014, 2015, 2016, 2017 Free Software Foundation, Inc.
|
||||
;;;; Ludovic Courtès
|
||||
;;;;
|
||||
;;;; This library is free software; you can redistribute it and/or
|
||||
|
@ -506,7 +506,10 @@
|
|||
(string=? "1234.567" (number->locale-string 1234.567)))
|
||||
|
||||
(pass-if "fraction, 1 digit"
|
||||
(string=? "1234.5" (number->locale-string 1234.567 1))))
|
||||
(string=? "1234.5" (number->locale-string 1234.567 1)))
|
||||
|
||||
(pass-if "positive inexact zero, 1 digit"
|
||||
(string=? "0.0" (number->locale-string .0 1))))
|
||||
|
||||
(with-test-prefix "French"
|
||||
|
||||
|
@ -572,4 +575,12 @@
|
|||
(lambda ()
|
||||
(let ((fr (make-locale LC_ALL %french-locale-name)))
|
||||
(string=? "1 234,56 EUR "
|
||||
(monetary-amount->locale-string 1234.567 #t fr))))))))
|
||||
(monetary-amount->locale-string 1234.567 #t
|
||||
fr))))))
|
||||
|
||||
(pass-if "positive inexact zero"
|
||||
(under-french-locale-or-unresolved
|
||||
(lambda ()
|
||||
(let ((fr (make-locale LC_ALL %french-locale-name)))
|
||||
(string=? "0,0 +EUR"
|
||||
(monetary-amount->locale-string 0. #f fr))))))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue