В двух словах статический метод переопределения не является полиморфизмом, он «скрывает метод». Когда вы переопределяете статический метод, у вас не будет доступа к методу базового класса, поскольку он будет скрыт производным классом. Использование super () приведет к ошибке времени компиляции.
Когда вы работаете с денежными значениями, вы можете избежать многих ошибок округления, работая в центах, иметь все свои затраты в центах, а при отображении их вы можете отобразить
(cost/100).toFixed(2)
. с плавающей точкой, и вы получите гораздо меньше ошибок округления.
После того, как мы пошли по кругу, взяв цену на продукт, затем вычтя сумму налога, доставки, обработки и страхования, чтобы получить промежуточный итог - я понял, что я делаю эти фоны, и из-за точек с плавающей точкой будучи несколько «непредсказуемым», тогда суммы никогда не будут соответствовать 100% времени.
Вот когда это поразило меня, и это было так очевидно. Я должен добавить все эти числа к цене продукта:
getFinalAmount() {
this.model.subTotal = this.subTotal = this.prdSrvc.getPriceTotal();
this.subTotal = parseFloat(this.subTotal).toFixed(2);
document.getElementById("tax").value = this.model.tax = this.tax =
this.subTotal * 0.07;
document.getElementById(
"shipping"
).value = this.model.shipping = this.shipping = this.subTotal * 0.03;
document.getElementById(
"insurance"
).value = this.model.insurance = this.insurance = this.subTotal * 0.01;
this.total = this.payPalSrvc.finalAmount =
parseFloat(this.tax) +
parseFloat(this.shipping) +
parseFloat(this.insurance) +
parseFloat(this.subTotal) +
1.0;
this.payPalSrvc.finalAmount = parseFloat(
this.payPalSrvc.finalAmount
).toFixed(2);
this.total = parseFloat(this.total).toFixed(2);
document.getElementById(
"subTotal"
).value = this.model.subTotal = this.subTotal;
document.getElementById("total").value = this.model.total = this.total;
this.tax = parseFloat(this.tax).toFixed(2);
this.shipping = parseFloat(this.shipping).toFixed(2);
this.insurance = parseFloat(this.insurance).toFixed(2);
return this.payPalSrvc.finalAmount;
}
Я также удалил валютную трубу из HTML, оставив меня с прямыми числами с двумя десятичными точками:
<input type="hidden" name="tax" id="tax" value="{{ this.tax }}" />
<input
type="hidden"
name="shipping"
id="shipping"
value="{{ this.shipping }}"
/>
<input
type="hidden"
name="insurance"
id="insurance"
value="{{ this.insurance }}"
/>
[ 117] Ниже приведено описание порядка на панели инструментов PayPal: