如何通过parseFloat将变量设置为小数?

时间:2017-11-02 16:36:32

标签: javascript

我的第一个剧本遇到了麻烦。当我在脚本中手动将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));
}

4 个答案:

答案 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返回一个字符串值。您希望确保应用中使用的值为floatinteger。两者都是JavaScript中的对象类型number,因此不是stringparseFloatparseInt用于将字符串值转换为数字。它们有缺点。它们只在字符串的开头转换数字值(或者更正确,截断字符串的其余部分)。

查找

var string1 = "test string 1";
var string2 = "1 test string";

console.log(parseInt(string1, 10)); //NaN
console.log(parseInt(string2, 10)); //1

parseFloat相同。

parseFloatparseInt之间的区别是它们返回的类型:前者返回一个浮点数(浮点数 - 十进制数),后者返回一个整数。你的乘数允许整数。 .在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无法从包含其他字符的字符串中删除值,然后允许使用数字。因此它会进行字符串到数字转换,但不像parseFloatparseInt

现在你的脚本:

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)

嗯......这很奇怪,但当我删除parseInt或parseFloat时(

function changemp() {
mp = prompt("Please enter the new multiplier", mp);
}

看起来它正在工作:)但是非常感谢大家的帮助,每个知识都很有帮助。