PHP bcdiv/bcmul

King_Markus

Well-known member
ID: 66751
L
24 November 2006
264
12
Hallo,

habe ein problem mit bcdiv und bcmul. Suche schon seit ca. 1,5 stunden den fehler finde ihn aber nicht.

PHP:
                        echo "<br>".$kampagne[$i]['mwst_ende']." mwst ".$kampagne[$i]['vk']."<br>";
                        
                        $kampagne[$i]['vk']=bcmul(bcdiv($kampagne[$i]['vk'],$kampagne[$i]['mwst_ende']+100,8),100,8);
                        
                        echo "".$kampagne[$i]['mwst_ende']." mwst ".$kampagne[$i]['vk']."<br>";
ausgabe sieht wie folgt aus:
Code:
19 mwst 3.4
19 mwst 0.00000000
ich weiß nicht warum ich unten einen 0 wert als ergebnis erhalte.
bitte helft mir.

mfg
markus
 
Ich glaube, Du bist des Lesens mächtig.
In der Beschreibung kann man folgendes nachlesen (zitat aus dem englischen)...
Oh ich hoffe Du bist auch dem Englischen mächtig:

"string bcdiv ( string $left_operand , string $right_operand [, int $scale ] )"

"string bcmul ( string $left_operand , string $right_operand [, int $scale ] )"

Wenn Du jetzt noch Fragen hast, frag ich mich, was Du daran nicht verstehen kannst...
 
Hm, seltsam. Ich habe den Code zum Testen folgendermassen angepasst:
PHP:
<?php
$kampagne = array(array('mwst_ende' => 19, 'vk' => 3.4));
$i = 0;

echo "<br>".$kampagne[$i]['mwst_ende']." mwst ".$kampagne[$i]['vk']."<br>";

$kampagne[$i]['vk']=bcmul(bcdiv($kampagne[$i]['vk'],$kampagne[$i]['mwst_ende']+100,8),100,8);

echo "".$kampagne[$i]['mwst_ende']." mwst ".$kampagne[$i]['vk']."<br>";
Und erhalte folgendes Ergebnis:
Code:
19 mwst 3.4
19 mwst 2.85714200
Also wie gewünscht.

Funkt da vielleicht irgendein anderer Code dazwischen?

@tobomator: Falls Du nicht helfen willst, lass es bitte einfach sein. Diese affige überhebliche Art bringt doch keinen weiter... :roll:
 
ein anderer code kann nicht dazwischen faxen. wenn ich nur mit / und * rechne geht es! nur mit bcdiv und bcmul funktioniert es nicht!
 
Funktioniert auch bei mir einwandfrei.

Code:
[FONT=Lucida Console]C:\Users\theHacker>php
<?php
$kampagne = array(array('mwst_ende' => 19, 'vk' => 3.4));
$i = 0;

echo "<br>".$kampagne[$i]['mwst_ende']." mwst ".$kampagne[$i]['vk']."<br>";
$kampagne[$i]['vk']=bcmul(bcdiv($kampagne[$i]['vk'],$kampagne[$i]['mwst_ende']+1
00,8),100,8);
echo "".$kampagne[$i]['mwst_ende']." mwst ".$kampagne[$i]['vk']."<br>";
?>
^Z
<br>19 mwst 3.4<br>19 mwst 2.85714200<br>
C:\Users\theHacker>php -v
PHP 5.3.6 (cli) (built: Mar 17 2011 10:37:07)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

C:\Users\theHacker>php -i | findstr bcmath
bcmath
bcmath.scale => 0 => 0[/FONT]
Probier mal, Multiplikation und Division aufzuteilen, ob bei dir nur eine der beiden Operationen spinnt.
 
Man kann doch restrictiv oder "lapsch" bei PHP einstellen.
in der beschreibung oben steht ja nur, es fehlen entgweder ein (string) cast vor den werten oder zwei "" die den wert als solches einschließen.
Ich würde immer erstmal ausprobieren, wie es in der Beschreibung steht.

Wenn ich überheblich klinge, dann war das nur sarkastisch von mir gemeint.
Wer testet nicht bis ins kleinste Detail, bevor man fragt ?
Ich versuch jedenfalls erstmal gründlich nachzulesen und zu forschen, bevor ich überhaupt eine Frage stelle, oder Google mir weiterhilft!
 
Ok, jetzt versteh ich offiziell gar nix mehr :hö:
Was steht im Manual? Worauf bezieht sich dieses "Restrictiv oder "lapsch""? Und wo kann ich es nachlesen?
 
Ich vermute, dass tobomator meint, man könne PHP auf strikte Datentypen umstellen. Da hätte ich allerdings auch gerne einen entsprechenden Link.

Wie man an meinem Beispiel sieht, ist es den bc-Funktionen relativ wurscht, welcher Datentyp reinkommt.

@King_Markus: Hast Du das inzwischen lösen können?
 
Moin,
auch auf die Gefahr hin dass das Problem schon gelöst wurde:

ich habe mir den Coodeteil auch noch mal angeguckt und mir fälllt dabei eine Sache auf: Seit wann darf man in PHP in verbindung mit Zahlen das Komma benutzen? er addiert ne Zahl hinzu, verwendet aber statt punkt ein kommazeichen.

Das allein macht doch schon nen euen parameter aus der Kommazahl und verpfuscht das ganze Ergebnis.

oder seh ich da was falsch ?

Grus DJPaschi
 
mir fälllt dabei eine Sache auf: Seit wann darf man in PHP in verbindung mit Zahlen das Komma benutzen? er addiert ne Zahl hinzu, verwendet aber statt punkt ein kommazeichen.

bcdiv hat drei Parameter, die Zahl wird nur zum zweiten Parameter hinzuaddiert, also die 100, während ",8" der scale-Parameter ist. ;)