首页 > 解决方案 > 我如何使我的计算应用程序的总数仅为美元和美分 0.00 美元的正确位数

问题描述

我有这个计算公式,它在用户输入所有必需字段后计算总数,但是总数最终是 15+ 位而不是 4 位,我只希望它们是美元和美分 0.00 的数字

this.state = {
soldPrice: 0.0,
shippingCost: 0.0,
shippingCharge: 0.0,
itemCost: 0.0,
Profit: ' ',
paypalFee: 0.30,
paypalFeePercentage: 0.029,
ebayFee: 0.1,
profitMargin: '',
paypalFeeTotal: '',
ebayFeeTotal: '',
profitColor: '',
};
}

calculateProfit = () => {
const finalValue = parseFloat(this.state.soldPrice || 0) +
parseFloat(this.state.shippingCharge || 0) - parseFloat(this.state.soldPrice || 0) *
parseFloat(this.state.paypalFeePercentage || 0) - parseFloat(this.state.paypalFee  || 0)
 - parseFloat(this.state.soldPrice || 0) *
parseFloat(this.state.ebayFee || 0) - parseFloat(this.state.shippingCost || 0)
 - parseFloat(this.state.itemCost || 0);

this.setState({ finalValue });
}
<NumberInput
     onchange={(shippingCharge) => this.setState({ shippingCharge })}
     />
     </View>
<Text style={styles.profitResult}>
      TOTAL PROFIT:{this.state.finalValue}</Text>
      </View>

我尝试使用 toPrecision 但我不知道如何将它应用到状态而不出现错误

标签: reactjsreact-native

解决方案


您可以使用Number.toFixed()小数精度(在您的情况下为 2)

https://www.jacklmoore.com/notes/rounding-in-javascript/

此外,由于在您的状态下,一切都已经是浮动的,我不相信您必须对parseFloat一切都使用|| 0for 一切。


推荐阅读