PHP Mit Variable rechnen in Zahl

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
647
ich möchte folgendes tun:

PHP:
$mwst = 19;
$summe = $summe * 1.$mwst;

doch das mit der Variable klappt so nicht. ich müsste manuell 19 angeben anstatt $mwst wie setze ich das um ?
 
PHP:
$summe = $summe * (1 + $mwst/100)

Oder verstehe ich die Frage nicht?
 
  • Gefällt mir
Reaktionen: Pfandfinder
Das Problem ist der Unterschied zwischen Zahlen und Ziffern.

Für Code sind mehrere Ziffern nicht automatisch eine Zahl, und im ersten Ansatz versuchst du eine Zahl nur über ihre Ziffern mit anderen Ziffern zu einer gültigen Zahl zu machen.
Auch das würde gehen, wenn man es richtig mach und Datentypen beachtet, es mach für den Fall aber keinerlei Sinn. Wie du die Zahl direkt als solche verwendest wurde ja schon gezeigt.
 
Keylan schrieb:
Das Problem ist der Unterschied zwischen Zahlen und Ziffern.
Nein, das Problem ist dass in PHP "." der string concat ist.
Sprich 1.$mwst ist im besten Fall "119".
Man könnte jetzt rumfrickeln mit: (float)"1.$mwst" :D
Am Einfachsten wäre wohl, $mwst direkt als 1.19 zu initialisieren.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Phrasendreher
playerthreeone schrieb:
Am Einfachsten wäre wohl, $mwst direkt als 1.19 zu initialisieren.
Genau das sollte man tunlichst unterlassen! Variabel-Namen sollten den zu Inhalt widerspiegeln…was du beschreibst ist der Brutto-Betrag.

Das wäre z.B. eine Lösung:
PHP:
$netto = 100;
$mwstSatz = 0.19; // entspricht 19%

$mwst = $netto * $mwstSatz ;
$brutto = $netto + $mwst;
 
  • Gefällt mir
Reaktionen: BeBur
die 19 kommt vermutlich aus der DB und könnte sich da ändern je nach benutzerauswahl
 
Pass nur am Ende auf, die Summe richtig auszugeben und auf der Rechnung auszuweisen.
Und nicht irgendwelche Zahlen auf oder abzurunden. Sonst passt es am Ende nicht.

Ich hatte mal beim Kumpel im Code diesen Fall gefunden, sodass pro Bestellung ca. 1-2ct zu viel berechnet wurde. 🤦🏽‍♂️
 
Evolutio schrieb:
Pass nur am Ende auf, die Summe richtig auszugeben und auf der Rechnung auszuweisen.
Und nicht irgendwelche Zahlen auf oder abzurunden. Sonst passt es am Ende nicht.

Ich hatte mal beim Kumpel im Code diesen Fall gefunden, sodass pro Bestellung ca. 1-2ct zu viel berechnet wurde. 🤦🏽‍♂️

das gehört hier zwar nicht wirklich hin, aber da fällt mir gerade auf:

angenommen eine Position kostet 2,6275 € (von einem festgelegten Stundenlohn pro minute daher so eine Zahl). wenn ich mit allen Kommazahlen mit 37 Einheiten rechne, komme ich ja auf 97,2175 €, also 97,22€. wenn ich direkt die 2,6275€ runde zu 2,63€ sind es 97,31 €. wie rechnet man das richtig für eine Rechnung ?
 
Wenn die Kosten der Position mit 4 Nachkommastellen angegeben werden, dann darfst du nicht vor der Summierung runden.

Wenn es Aufwändig eine hohe Rechengenauigkeit zu halten sagt man als Faustregel, das man 4 Stellen genauer Rechnen sollte als der benötigte Endwert damit Rundungen eher keine Rolle spielen.

Nur weil im Geldverkehr Beträge unter 1 Cent gerundet werden, ist diese Grenze in der Regel nur für die finale Abwicklung der Zahlung.
 
Das Stichwort wäre variable indirection und eval(), würde von sowas aber auch abraten, wo es nur geht.

Solche Basteleien sorgen nur dafür, daß man am Ende in irgendwelche unerwarteten Probleme läuft, die trivialst hätten vermieden werden können --- und nur, damit man es "einfacher" hat.
 
Pfandfinder schrieb:
wie rechnet man das richtig für eine Rechnung ?
Du willst deine Schulaufgaben Frage oben im Thread hoffentlich nicht wirklich für echtes Rechnungswesen einsetzen. Technisch lautet die Antwort: Jedenfalls ohne Fließkommazahlen. Alles andere ist eine rechtliche Frage.
 
Zurück
Oben