我的第一个剧本遇到了麻烦。当我在脚本中手动将mp
更改为1.5
时,它可以正常运行bet = 15
。但是当我点击带有changemp
功能的按钮时,请点击1.5
然后点击确定,它会将下注乘以1
,而不是1.5
。 (它不是完整的脚本,只有几行:D)
var bet = 10
var mp = 2
... a few lines later
if(thenumber > rollUnder)
{
start = start * mp
}
function changemp() {
mp = parseInt(prompt("Please enter the new multiplier", mp));
}
答案 0 :(得分:1)
这是因为你正在使用parseInt
并且1.5中的整数是1.只是不要在和changemp()函数中使用parseInt
,它会像你想要的那样工作。
您也可以使用parseFloat
。但是,当你进行高级计算时,parseFloat
会设置很多小数。
答案 1 :(得分:1)
因为您使用了parseInt而不是praseFloat函数。
如果我们传递十进制值,parseInt将只返回整数,然后它将返回上限值
如果您的号码也可以是小数位,请使用parseFloat。
function changemp() {
mp = parseFloat(prompt("Please enter the new multiplier", mp));
}
答案 2 :(得分:1)
不会发布答案,但因为这或多或少成为一种教学经验,我会:
JavaScript是弱类型的。它可以转换不同的类型而无需你进行转换。如果在运行时它成功很好,如果没有失败。
函数prompt
返回一个字符串值。您希望确保应用中使用的值为float
或integer
。两者都是JavaScript中的对象类型number
,因此不是string
。 parseFloat
和parseInt
用于将字符串值转换为数字。它们有缺点。它们只在字符串的开头转换数字值(或者更正确,截断字符串的其余部分)。
查找
var string1 = "test string 1";
var string2 = "1 test string";
console.log(parseInt(string1, 10)); //NaN
console.log(parseInt(string2, 10)); //1
parseFloat
相同。
parseFloat
和parseInt
之间的区别是它们返回的类型:前者返回一个浮点数(浮点数 - 十进制数),后者返回一个整数。你的乘数允许整数。 .
在JavaScript中用作小数符号!
我们可以看到差异:
var a = "1.5";
var b = "1,5";
console.log(parseFloat(a)); //1.5
console.log(parseFloat(b)); //1 //ignores the comma - truncates after 1
最后是包装函数Number
来创建一个新数字:
var string1 = "test string 1.5";
var string2 = "1.5 test string";
var string3 = "1.5";
console.log(Number(string1)); //NaN
console.log(Number(string2)); //NaN
console.log(Number(string3)); //1.5
Number
无法从包含其他字符的字符串中删除值,然后允许使用数字。因此它会进行字符串到数字转换,但不像parseFloat
和parseInt
现在你的脚本:
var bet, mp, start;
bet = 10;
mp = changemp();
start = bet * mp;
function changemp() {
//we are using return here:
//use parseFloat and trim() to remove unwanted white space characters
return parseFloat(prompt("Please enter the new multiplier", 2).trim() );
}
console.log(start);
最后一点:prompt
是基本的,对于学习语言很有帮助,但是你看不到最适合这种操作。更好的实现方式是使用input
类型的number
元素(在现代浏览器中很常见)
var multiplierInput, calculateButton, resultSpan;
multiplierInput = document.getElementById("multiplier");
calculateButton = document.getElementById("calculate");
resultSpan = document.getElementById("result");
//assign event:
calculateButton.addEventListener("click", calculate);
function calculate() {
resultSpan.textContent = parseFloat(multiplierInput.value) * 10;
}
10 x <input type="number" id="multiplier" /> = <span id="result"></span><br />
<button id="calculate">calculate</button>
答案 3 :(得分:0)
function changemp() {
mp = prompt("Please enter the new multiplier", mp);
}
看起来它正在工作:)但是非常感谢大家的帮助,每个知识都很有帮助。