Craig Duncan

Craig Duncan

Contents

PHP RFC: Prevent number_format() from returning negative zero

  • Version: 0.1
  • Date: 2017-04-01
  • Author: Craig Duncan php@duncanc.co.uk
  • Proposed version: PHP 7.2
  • Status: Implemented (in PHP 7.2)

Introduction

Calling number_format(-0.00) returns string(1) “0”, however calling number_format(-0.01) returns string(2) “-0”.

As number_format() is commonly used for formatting numbers for human-readable display, this behaviour is unexpected.

Proposal

This RFC proposes keeping number_format() consistent and not displaying the sign when a number is rounded to zero.

Concerns

There was an argument that all floating point logic in PHP follows IEEE 754, where negative zero is valid.

However number_format() already prevents negative zero, so this isn't the case.

Backward Incompatible Changes

This change has BC concerns for anybody relying on the current behaviour, but this is thought to be incredibly minor and not unrealistic for a point release.

Proposed PHP Version(s)

PHP 7.2

Implementation

References

Initial discussion that led to this RFC's creation: https://externals.io/thread/522

Discussion thread: https://externals.io/thread/800

Voting thread: https://externals.io/thread/828

Votes

An option needs 50%+1 votes to win

Prevent number_format() from returning negative zero (93.3% approved)
User Vote
ashnazg Yes
colinodell Yes
danack Yes
daverandom Yes
dm Yes
emir Yes
galvao Yes
kelunik Yes
narf Yes
ocramius Yes
patrickallaert No
peehaa Yes
pollita Yes
sammyk Yes
trowski Yes