Es besteht ein allgemeiner Zusammenhang zwischen den Preisen, der Menge, dem Rabatt, der Steuer und deren Genauigkeit.
Assume:
x is the price
y is the percentage
s is the rounded sub-total
2 Directions
A) incl. Tax => excl. Tax => incl. Tax
B) excl. => incl. => excl.
Das wichtige Problem ist die gerundete Zwischensumme, die ich mit der max berechne. Error. 2 Nachkommastellen bedeuten 5 * 10 ^ -3
A) x * 10 ^ 2 / (y + 10 ^ 2) // s * (y + 10 ^ 2) / 10 ^ 2
B) x * (y + 10 2) / 10 2 // s * 10 2 / (10 2 + y)
A)
Subtotal precision 2 fractional digits:
5*10^-3*(y+10^2)/10^2 => (y+10^2)/10^2<1 => no y
3 fractional digits:
5*10^-4*(y+10^2)/10^2 => (y+10^2)/10^2<10 => y<900
4 fractional digits:
5*10^-5*(y+10^2)/10^2 => (y+10^2)/10^2<10^2 => y<90900
(must be a very bad country)
......
B)
Subtotal precision 2 fractional digits:
(5*10^-3)*10^2/(10^2+y) => 10^2/(10^2+y)<1 => every y
Wenn Sie mit Rabatten oder Steuern rechnen und den Preis neu berechnen möchten , kann die nächste Erklärung für Sie interessant sein. Bitte beachten Sie, da ich im Frontend keinen Fall kenne, ist es möglich, dass es eine interne Berechnung gibt. A) Summe => Steuer / Rabatt => Summe B) Steuer / Rabatt => Summe => Steuer / Rabatt
A) x * y / 10 ^ 2 // s * 10 ^ 2 / y
B) x * 10 ^ 2 / y // s * y / 10 ^ 2
A) Subtotal precision 2 fractional digits:
(5*10^-3)*10^2/y => 10^2/y < 1 => y>10^2
Subtotal precision 3 fractional digits:
(5*10^-4)*10^2/y => 10^2/y < 10 => y>10
Subtotal precision 4 fractional digits:
... 10^2/y < 10^2 => y>1
Mit einer Genauigkeit von 2 Stellen müssen Sie eine Rate ohne gebrochene Ziffern haben. Beispiel: Summe: 15,15 Steuersatz: 0,3% => Steuer 0,04545 => gerundet 0,0455 Steuer: 0,0455 => Summe: 15,17
B) Subtotal precision 2 fractional digits:
(5*10^-3)*y/10^2 => y/10^2 < 1 => y < 10^2
Wenn a die Genauigkeit ist, muss y kleiner als a + 2 sein.
Bitte beachten Sie, wenn Sie mit Mengen umgehen. Der Fehler wird multipliziert. Wenn Sie also ein Maximum von 10 ^ 5 haben, müssen Sie eine Genauigkeit von 7 haben. Dies ist nur besorgniserregend, wenn Sie mit Offset rechnen!
ADDITION (9.10.2013 Magento Version 1.7.0.2) Brutto <=> Netto und Steuern // Amerika <=> alte Europa-Mengen sind ganze Zahlen (Cents) und das Mapping
f (x) = rund (a * x) a> 1 ist nicht bijektiv. In meinen Worten: Nicht für jeden Preis inkl. existiert ein Preis zzgl. gesetzl. oder Es gibt manchmal 2 Preise inkl. gesetzl. für einen preis excl. oder Sie können 2 verschiedene Ergebnisse erhalten, je nachdem, wie Sie berechnen
Praxisbeispiel aus Deutschland:
Sie versuchen einen Preis inkl. MwSt. Einzugeben. Steuern: 19,95 Sie erhalten 16,76 (2 Ziffern) als Ihre Preise zzgl. gesetzl. die Steuern (19%). Wenn Sie die 19% Steuern berechnen, erhalten Sie (16,76 * 0,19) 3,18. (Achtung: 19,95 * 019 / 1,19 ~ 3,19)
Es gibt also einen Cent Unterschied. 16,76 => 19,94 16,77 => 19,96
Es gibt keinen Preis 19,95 in Amerika - Land des Netto.
Rechnen Sie so weit wie möglich mit Originalpreisen. Verwenden Sie für die Einbeziehung der Preise den eingegebenen Preis und die Steuern (gebrochene Zahl).
PayPal hat diesen Betrugscheck - jetzt bin ich mir nicht sicher - aber PayPal fügt nur die Zahl hinzu, die Magento ihm gibt. siehe http://fabiankrueger.de/blog/magento-und-paypayl-rundungsfehler/
Wenn dies nicht zutrifft und PayPal Tax oder Total neu berechnet, ist dieses Problem nicht lösbar, da sonst die Preise - falsch oder richtig - zuvor in Magento angezeigt werden . Löse es dort. Bei mir scheint es zu funktionieren.