JS debug - var bankroll值已经过时了

时间:2016-10-09 22:39:11

标签: javascript debugging

这是我写过的第一个JS程序,所以非常感谢任何帮助!

我正在获得一个WAY off的资金价值。例如,如果您使用

runs = 1,start = 5000,bonusMultiplier =介于0和1之间的任何东西

我通常会获得5000500的资金价值。我已经查了几个小时的代码,但无法理解。在5000500中,5000来自var start,500来自var betsize。我不知道它们是如何组合成一个数字的。请帮忙!

var profit = 0;
var runs = prompt("How many runs?");
var start = prompt("Starting chips?");
var bonusMultiplier = prompt("Bonus? Use decimal.");
var inAmt = (start/(1+bonusMultiplier));
var bonusValue = bonusMultiplier * inAmt;


function simulation(){

var bankroll = start;


function makeBet(){
if (bankroll === 0){
    console.log("BUSTO IN " + hands + "HANDS");
    betsize = 0;

} else if(bankroll <=50) {
betsize = bankroll;
} else if (bankroll<1000) {
betsize = 1/2 * bankroll;
} else {
betsize = 500;
}

var odds = Math.floor(Math.random() * 1000+1);
//console.log(odds);

if (odds>507) {
bankroll = bankroll + betsize;
} else {
bankroll = bankroll - betsize;
}
console.log("bankroll " + bankroll);
console.log("betsize " + betsize);
}

/*var hands=prompt("hands");
console.log("hands " + hands)


for (i = 0; i < hands; i++) {
makeBet();
}*/

while (bankroll >0) {
if (bankroll>=7000) {break;}
makeBet();
}

if (bankroll === 0) {
profit -= inAmt;
}
if (bankroll >=7000) {
profit += bankroll;
profit -= inAmt;
}}

for (i=0; i<runs; i++) {
simulation();
}
console.log("start " + start, " bonus multiplier " + bonusMultiplier, " in amount "+ inAmt, " bonus value "+ bonusValue);
console.log("profit after " + runs + " runs = $" + profit);

2 个答案:

答案 0 :(得分:1)

start被解释为字符串。如果对字符串和数字求和,则该数字将转换为字符串,然后与另一个字符串进行仲裁。改变

start = prompt("Starting chips?");

start = parseFloat(prompt("Starting chips?"));

答案 1 :(得分:1)

我假设使用,

var runs = parseFloat( prompt("How many runs?") );
var start = parseFloat( prompt("Starting chips?") );
var bonusMultiplier = parseFloat( prompt("Bonus? Use decimal.") );

将解决您的问题。

如果需要返回整数,请使用parseInt()

提示接受输入为strings。 如果你想使用数学运算符,你需要数字。

数据类型主要是初学者的错误问题,即使您知道,也要阅读它们。抓住,他们几乎再也不会对你造成伤害。