Skip to content

PHP 8.4.*: round seems to ignore the given mode / uses rounding before precision #17885

@Fahl-Design

Description

@Fahl-Design

Description

The following code:

<?php

var_dump(50*2.55);
var_dump(\round(50 * 2.55,0, PHP_ROUND_HALF_UP));
var_dump(\round(50 * 2.55,0, PHP_ROUND_HALF_DOWN));
var_dump(\round(50 * 2.55,0, PHP_ROUND_HALF_EVEN));
var_dump(\round(50 * 2.55,0, PHP_ROUND_HALF_ODD));

Resulted in this output:

float(127.49999999999999)
float(127)
float(127)
float(127)
float(127)

But I expected this output instead:

float(127.49999999999999)
float(128)
float(127)
float(128)
float(127)

Image

PHP Version

8.4.1-8.4.4

Operating System

https://3v4l.org/Od2ZP

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions