2016-06-02 8 views
-1

Ich habe Schwierigkeiten, Buchhaltungssoftware in PHP zu machen. Und ich habe einen Bug von der Schwimmerpräzision. HierPHP: 2258574.18 nicht gleich 2058555.18 + 200019 - 0

ist die Probe Abschaltbetriebsart Code:

$a = (float) 2258574.18; 
$b = (float) 2058555.18; 
$c = 200019; 
$d = 0; 

($b+$c-$d == $a) ? $x = "equals" : $x = "!equals"; 
echo $x; 

Ausgänge:

! gleich

Ich benutzte round()abs() aber nicht gelöst. Es funktioniert, wenn ich es nur in Int (int) konvertieren.

Ich bin fast Selbstmord deswegen.

+0

http://php.net/manual/en/language.types.float.php#113703 –

+0

tun 'echo "a: $ ab: $ b" ; 'und Sie werden sehen, wie diese Werte intern gespeichert werden. –

+0

FYI: In der Konsole (js) wird '2058555.18 + 200019' ausgeben' 2258574.1799999997' – Justinas

Antwort

0

Versuchen round() mit Präzision 2

$e = $b+$c-$d; 
(round($e, 2) == round($a, 2)) ? $x = "equals" : $x = "!equals"; 
echo $x; 
+0

Ist es gut, den Buchwert zu runden? Ich denke nicht. –