PHP Rundungsproblem (5.2.3)?

Ich frage mich, ob ich ein Problem mit der Rundung in PHP gefunden habe, insbesondere 5.2.3 (bei anderen Versionen bin ich mir derzeit nicht sicher):

$t = 0;

$taxAmount = (5.000 / 100) * 0.7;
$t += $taxAmount;

var_dump($t); // float(0.035)
var_dump(round($t, 2)); // float(0.03)
var_dump(number_format($t, 2)); // string(4) "0.03"

Für mich sollte 0.035 auf 0.04 runden oder bin ich nur verrückt?

Bearbeiten

Danke anNebyGeminis AntwortIch dachte, ich würde dies stattdessen tun:

$t = 0;

$taxAmount = bcmul(bcdiv(5.000, 100, 3), 0.7, 3);
$t += $taxAmount;

var_dump($t); // float(0.035)
var_dump(round($t, 2)); // float(0.04)
var_dump(number_format($t, 2)); // string(4) "0.04"

Welches funktioniert perfekt.

Übrigens berechne ich eine Steuer in einem Einkaufswagen. Die Gesamtsumme der Bestellung beträgt 0,70 (70 Cent) und die Steuer beträgt 5%.

Bearbeiten

Danke anDie Antwort von Ignacio Vazquez-Abrams, um zu zeigen, wo das Problem liegt:

printf('%.18F', 5.000 / 100 * 0.7);

Antworten auf die Frage(3)

Ihre Antwort auf die Frage