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