mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #11206 -- Ensure that the floatformat template filter doesn't switch to scientific notation when asked to format a zero value with more than six decimal places. Thanks Tai Lee for the report and fix and Facundo Batista for his help when Decimal module expertise was needed.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15736 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -149,9 +149,19 @@ def floatformat(text, arg=-1): | ||||
|     if p == 0: | ||||
|         exp = Decimal(1) | ||||
|     else: | ||||
|         exp = Decimal('1.0') / (Decimal(10) ** abs(p)) | ||||
|         exp = Decimal(u'1.0') / (Decimal(10) ** abs(p)) | ||||
|     try: | ||||
|         return mark_safe(formats.number_format(u'%s' % str(d.quantize(exp, ROUND_HALF_UP)), abs(p))) | ||||
|         # Avoid conversion to scientific notation by accessing `sign`, `digits` | ||||
|         # and `exponent` from `Decimal.as_tuple()` directly. | ||||
|         sign, digits, exponent = d.quantize(exp, ROUND_HALF_UP).as_tuple() | ||||
|         digits = [unicode(digit) for digit in reversed(digits)] | ||||
|         while len(digits) <= abs(exponent): | ||||
|             digits.append(u'0') | ||||
|         digits.insert(-exponent, u'.') | ||||
|         if sign: | ||||
|             digits.append(u'-') | ||||
|         number = u''.join(reversed(digits)) | ||||
|         return mark_safe(formats.number_format(number, abs(p))) | ||||
|     except InvalidOperation: | ||||
|         return input_val | ||||
| floatformat.is_safe = True | ||||
|   | ||||
		Reference in New Issue
	
	Block a user