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,
});
}
};
添加回答
举报