下面是我正在尝试在我的jQuery应用程序中使用的简单Math.max
语句,以及被调用的方法。
guaranteedEoy: function() {
return this.fixedAllocation() * (1 + (this.attributes.fixedRate / 100)) * Math.pow(1, 6);
},
contractVal: function (value) {
value = parseFloat(value).toFixed(2);
console.log(value);
console.log(this.guaranteedEoy());
console.log(parseFloat(this.guaranteedEoy()) + parseFloat(value));
console.log(this.attributes.purchasePayment * Math.pow(1.01, 7));
console.log(Math.max((this.attributes.purchasePayment * Math.pow(1.01, 7)), (this.guaranteedEoy() + value)));
console.log(' ');
return Math.max((this.attributes.purchasePayment * Math.pow(1.01, 7)), (this.guaranteedEoy() + value));
},
我将console.log
语句放在那里,因为从Math.max
函数返回的数字比它应该比较的数字指数大得多。为了说明这里的控制台读数的屏幕打印:
此处简化每个控制台读数的值对应
Value: 64000.00
this.guaranteedEoy(): 37008
this.guaranteedEoy() + value: 101008
this.attributes.purchasePayment * Math.pow(1.01, 7): 107213.53521070098
Math.max((this.attributes.purchasePayment * Math.pow(1.01, 7)), (this.guaranteedEoy() + value)): 370086400
基本上Math.max
语句读取
Math.max(107213.53521070098, 101008)
但由于某种原因,它返回的值为370086400
。
答案 0 :(得分:3)
370086400
是所提及的值37008
和64000
的串联。
应该是:
console.log(Math.max((this.attributes.purchasePayment * Math.pow(1.01, 7)),
(parseFloat(this.guaranteedEoy()) + parseFloat(value))));
再次使用parseFloat
以避免字符串连接(发生)。
修改:看起来value
是字符串(由于.toFixed()
),而this.guaranteedEoy()
返回Number。因此,仅parseFloat
的{{1}}就足够了。
答案 1 :(得分:1)
toFixed
返回一个字符串,因此this.guaranteedEoy() + value
执行字符串连接。如果您只想将值四舍五入到小数点后两位,请参阅Round to at most 2 decimal places (only if necessary)。