Номера JavaScript не добавляются правильно каждый раз, когда parseFloat toFixed

В двух словах статический метод переопределения не является полиморфизмом, он «скрывает метод». Когда вы переопределяете статический метод, у вас не будет доступа к методу базового класса, поскольку он будет скрыт производным классом. Использование super () приведет к ошибке времени компиляции.

1
задан kronus 17 January 2019 в 00:18
поделиться

2 ответа

Когда вы работаете с денежными значениями, вы можете избежать многих ошибок округления, работая в центах, иметь все свои затраты в центах, а при отображении их вы можете отобразить

(cost/100).toFixed(2)

. с плавающей точкой, и вы получите гораздо меньше ошибок округления.

0
ответ дан Adrian Brand 17 January 2019 в 00:18
поделиться

После того, как мы пошли по кругу, взяв цену на продукт, затем вычтя сумму налога, доставки, обработки и страхования, чтобы получить промежуточный итог - я понял, что я делаю эти фоны, и из-за точек с плавающей точкой будучи несколько «непредсказуемым», тогда суммы никогда не будут соответствовать 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: paypal dashboard detail of order

0
ответ дан kronus 17 January 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: