Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
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.
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"
Am Einfachsten wäre wohl, $mwst direkt als 1.19 zu initialisieren.
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. 🤦🏽♂️
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.
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.