diff --git a/handlers/views_handler_field_numeric.inc b/handlers/views_handler_field_numeric.inc index acc301d..b3678d9 100644 --- a/handlers/views_handler_field_numeric.inc +++ b/handlers/views_handler_field_numeric.inc @@ -124,18 +124,17 @@ class views_handler_field_numeric extends views_handler_field { } if (!empty($this->options['set_precision'])) { - $value = number_format($value, $this->options['precision'], $this->options['decimal'], $this->options['separator']); + $precision = $this->options['precision']; + } + elseif ($decimal_position = strpos($value, '.')) { + $precision = strlen($value) - $decimal_position - 1; } else { - $remainder = abs($value) - intval(abs($value)); - $value = $value > 0 ? floor($value) : ceil($value); - $value = number_format($value, 0, '', $this->options['separator']); - if ($remainder) { - // The substr may not be locale safe. - $value .= $this->options['decimal'] . substr($remainder, 2); - } + $precision = 0; } + $value = number_format($value, $precision, $this->options['decimal'], $this->options['separator']); + // Should we format as a plural. if (!empty($this->options['format_plural'])) { $value = format_plural($value, $this->options['format_plural_singular'], $this->options['format_plural_plural']);