我有一个根据平方英尺和基准价计算价格的函数。
2000平方英尺之后,每500平方英尺的价格上涨10%。 2000sqft及以下的面积为149.99。
该功能在下面...
checkPrice = () => {
debugger;
let base_price = 149.99;
if(this.state.propertySqft > 2000){
let overage = this.state.propertySqft - 2000;
let percentage = Math.floor(overage % 500) * 10;
base_price += base_price * percentage;
this.setState({ totalPrice: base_price });
}
}
我遇到的问题是,如果平方英尺是一个整数,则percentage
会显示为“ 0”,而math.ceil(overage % 500)
似乎无法正常工作。
例如。...如果我要放置5001平方英尺,则价格应为149.99 * 60%,即239.98,但由于percentage
最终为10,所以价格为164.98,而不是60。
如果我放置5000平方英尺,则percentage
会显示为“ 0”,这是我输入为平方英尺的任何整数的情况。
有人知道我在这里做错了什么吗,或者为什么这没有按照我期望的那样工作?
答案 0 :(得分:1)
模运算符用于将距离移至下一个较低的倍数,例如traitCollectionDidChange
将是2006 % 500
,就像6
。您要除,在这种情况下要得到4:500 * 4 + 6 = 2006
,然后将其取整到下一个整数。
如果您将基本价格乘以10,则不会将其提高10%,而不会提高1000%。您可能需要0.1(每百个 10 )。
我将其写为:
2006 / 500 = 4.00...