toFixed() 不是函数

我在使用 toFixed() 函数时遇到困难。在下面的代码中,当我调用 setState 时,我试图将计算固定为两位小数,但由于某种原因,我收到一条错误消息toFixed() is not a function


我确保 tipPercent 和 subtotal 都被认为是数字typeof()


this.setState({

    subtotal,

    tip: (this.state.tipPercent * subtotal).toFixed(2),

    tax: (0.07 * subtotal).toFixed(2),

    fee: 1,

  });

这是整个代码块:


calculateTotal = () => {

   var total = 0;

   var subtotal = 0;


   // calculate subtotal

   Object.keys(this.state.bill.items).map((item) => {

     subtotal +=

       this.state.bill.items[item].price *

       this.state.bill.items[item].quantity;

   });


   // calculate tax/tip

   if (subtotal !== 0) {

     this.setState({

       subtotal,

       tip: (this.state.tipPercent * subtotal).toFixed(2),

       tax: (0.07 * subtotal).toFixed(2),

       fee: 1,

     });

   } else {

     this.setState({

       subtotal,

       tip: 0,

       tax: 0,

     });

   }


   total = subtotal + this.state.tax + this.state.tip + this.state.fee;


   this.setState({ total: total, loading: false });

};

哪里this.state.bill.items看起来像这样:


Array [

   Object {

      "item": "Sip of Sunshine",

      "price": 6.5,

      "quantity": 4,

   },

   Object {

     "item": "Sip of Sunshine",

     "price": 6.5,

     "quantity": 3,

   },

   Object {

     "item": "Bud Light",

     "price": 2.75,

     "quantity": 2,

   },

 ]


慕工程0101907
浏览 171回答 1
1回答

桃花长相依

我能够通过使用该Math.round()运算并将整个方程乘以 100,然后除以 100 来解决此解决方案,这使数学四舍五入到小数点后两位,因为 JavaScript 本质上会出现很多地方。由于toFixed()返回一个字符串,我无法将下面的状态设置为正确的数值。Math.round()通过始终将其保留为四舍五入到小数点后两位的数字来解决此问题。这是该函数的更新版本calculateTotal():calculateTotal = () => {    var subtotal = 0;    // calculate subtotal    Object.keys(this.state.bill.items).forEach((item) => {      subtotal +=       this.state.bill.items[item].price *       this.state.bill.items[item].quantity;    });    if (subtotal !== 0) {      this.setState({        subtotal,        tip: Math.round(this.state.tipPercent * subtotal * 100) / 100,        tax: Math.round(0.07 * subtotal * 100) / 100,        fee: 1,      });      this.setState({        total: subtotal + this.state.tax + this.state.tip + this.state.fee,        loading: false,      });    }};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript