为了账号安全,请及时绑定邮箱和手机立即绑定

toFixed() 不是函数

toFixed() 不是函数

慕工程0101907 2023-05-25 16:41:02
我在使用 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,   }, ]
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

我能够通过使用该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,

      });

    }

};


查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信