def test_default_rounding(self): """ Testing Round-Half-Even (Banker's rounding) A '5' is rounded to the closest 'even' number """ self.assertEqual(numbers.format_decimal(5.5, '0', locale='sv'), '6') self.assertEqual(numbers.format_decimal(6.5, '0', locale='sv'), '6') self.assertEqual(numbers.format_decimal(6.5, '0', locale='sv'), '6') self.assertEqual(numbers.format_decimal(1.2325, locale='sv'), '1,232') self.assertEqual(numbers.format_decimal(1.2335, locale='sv'), '1,234')
def test_decimals(self): """Test significant digits patterns""" self.assertEqual(numbers.format_decimal(Decimal('1.2345'), '#.00', locale='en_US'), '1.23') self.assertEqual(numbers.format_decimal(Decimal('1.2345000'), '#.00', locale='en_US'), '1.23') self.assertEqual(numbers.format_decimal(Decimal('1.2345000'), '@@', locale='en_US'), '1.2') self.assertEqual(numbers.format_decimal(Decimal('12345678901234567890.12345'), '#.00', locale='en_US'), '12345678901234567890.12')
def test_patterns(self): self.assertEqual(numbers.format_decimal(12345, '##0', locale='en_US'), '12345') self.assertEqual(numbers.format_decimal(6.5, '0.00', locale='sv'), '6,50') self.assertEqual(numbers.format_decimal(10.0**20, '#.00', locale='en_US'), '100000000000000000000.00') # regression test for #183, fraction digits were not correctly cutted # if the input was a float value and the value had more than 7 # significant digits self.assertEqual(u'12,345,678.05', numbers.format_decimal(12345678.051, '#,##0.00', locale='en_US'))
def decimal(self, number, format=None): """Return a decimal number formatted for the locale. >>> fmt = Format('en_US') >>> fmt.decimal(1.2345) u'1.234' """ return format_decimal(number, format, locale=self.locale)
def test_format_decimal(): assert numbers.format_decimal(1.2345, locale='en_US') == u'1.234' assert numbers.format_decimal(1.2346, locale='en_US') == u'1.235' assert numbers.format_decimal(-1.2346, locale='en_US') == u'-1.235' assert numbers.format_decimal(1.2345, locale='sv_SE') == u'1,234' assert numbers.format_decimal(1.2345, locale='de') == u'1,234' assert numbers.format_decimal(12345.5, locale='en_US') == u'12,345.5'
def test_significant_digits(self): """Test significant digits patterns""" self.assertEqual(numbers.format_decimal(123004, '@@',locale='en_US'), '120000') self.assertEqual(numbers.format_decimal(1.12, '@', locale='sv'), '1') self.assertEqual(numbers.format_decimal(1.1, '@@', locale='sv'), '1,1') self.assertEqual(numbers.format_decimal(1.1, '@@@@@##', locale='sv'), '1,1000') self.assertEqual(numbers.format_decimal(0.0001, '@@@', locale='sv'), '0,000100') self.assertEqual(numbers.format_decimal(0.0001234, '@@@', locale='sv'), '0,000123') self.assertEqual(numbers.format_decimal(0.0001234, '@@@#',locale='sv'), '0,0001234') self.assertEqual(numbers.format_decimal(0.0001234, '@@@#',locale='sv'), '0,0001234') self.assertEqual(numbers.format_decimal(0.12345, '@@@',locale='sv'), '0,123') self.assertEqual(numbers.format_decimal(3.14159, '@@##',locale='sv'), '3,142') self.assertEqual(numbers.format_decimal(1.23004, '@@##',locale='sv'), '1,23') self.assertEqual(numbers.format_decimal(1230.04, '@@,@@',locale='en_US'), '12,30') self.assertEqual(numbers.format_decimal(123.41, '@@##',locale='en_US'), '123.4') self.assertEqual(numbers.format_decimal(1, '@@',locale='en_US'), '1.0') self.assertEqual(numbers.format_decimal(0, '@',locale='en_US'), '0') self.assertEqual(numbers.format_decimal(0.1, '@',locale='en_US'), '0.1') self.assertEqual(numbers.format_decimal(0.1, '@#',locale='en_US'), '0.1') self.assertEqual(numbers.format_decimal(0.1, '@@', locale='en_US'), '0.10')
def test_subpatterns(self): self.assertEqual(numbers.format_decimal(-12345, '#,##0.##;-#', locale='en_US'), '-12,345') self.assertEqual(numbers.format_decimal(-12345, '#,##0.##;(#)', locale='en_US'), '(12,345)')
def test_formatting_of_very_small_decimals(self): # previously formatting very small decimals could lead to a type error # because the Decimal->string conversion was too simple (see #214) number = Decimal("7E-7") fmt = numbers.format_decimal(number, format="@@@", locale='en_US') self.assertEqual('0.000000700', fmt)