;;;; 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
(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))
(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 #\.))
;;;; 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
(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"
(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))))))))