Javascript val()问题

Javascript val()问题,javascript,jquery,Javascript,Jquery,当我为chance输入一个小数点时,它返回NaN作为工资和利润。知道为什么吗?我还需要做些什么才能将利润四舍五入到小数点后的第二位 谢谢 $(document).ready(function(){ function updateValues() { // Grab all the value just incase they're needed. var chance = $('#chance').val();

当我为chance输入一个小数点时,它返回NaN作为工资和利润。知道为什么吗?我还需要做些什么才能将利润四舍五入到小数点后的第二位

谢谢

    $(document).ready(function(){

        function updateValues() {
            // Grab all the value just incase they're needed.
            var chance = $('#chance').val();
            var bet = $('#bet').val();
            var pay = $('#pay').val();
            var profit = $('#profit').val();

            // Calculate the new payout.
            var remainder = 101 - chance;
            pay = Math.floor((992/(chance+0.5)) *100)/100;


            // Calculate the new profit.
            profit = bet*pay-bet;



            // Set the new input values.
            $('#chance').val(chance);
            $('#bet').val(bet);
            $('#pay').val(pay);
            $('#profit').val(profit);
        }


        $('#chance').keyup(updateValues);
        $('#bet').keyup(updateValues);
        $('#pay').keyup(updateValues);
        $('#profit').keyup(updateValues);


    });

您需要使用parseFloat来正确处理默认为字符串的值:

var chance = parseFloat($('#pay').val());
/*same for other values*/
要将利润四舍五入到2位小数,可以对该数字使用toFixed,这会再次将其转换回字符串

3.123.toFixed(2) = "3.12"
尝试使用:

您还可以使用
toFixed
指定小数位数

编辑

您需要修改
chance

chance = parseFloat(chance);
您可以在此处看到这一点:


首先使用parseFloat或(如果不需要浮点值,则使用parseInt)

我还需要做什么才能将利润四舍五入到第二个小数点。


val
检索字符串而不是数字。所以,在某个时刻,你使用的不是数字而是字符串。特别是“十进制”是什么?把你的输入转换成数字,因为它们是字符串。例如:var chance=Number($('#chance').val())。。。对所有对象执行此操作可能是html输入类型=数字吗?@KhanhTO Math.round返回一个
整数,但OP希望保留2位小数。这让我的问题变得更糟。这导致乘数为19.64,而它应该是1.98,这是之前的情况。仍然有问题。仍然没有解决它。。。有什么想法吗?@Jake那么你的公式有问题,而不是
parseFloat
@Jake Math.floor((992/(parseFloat(“0.5”)+0.5))*100)/100==992-正确的解决方案应该是什么?这个公式看起来并不十分合理。在地板前乘以100,然后除以100看起来有点奇怪。在使用标准功能来避免尴尬之前,你应该在自己的代码中搜索问题。我不怕为自己的错误感到尴尬。那密码不行。我需要机会+0.5才能让这个和992起作用。我放了parseInt,当我放50.1或50.anything时,它仍然返回NaN。parseFloat让我后退了两步。它把工资和利润都搞砸了。你有没有试过用parseInt来确认是什么导致了这个问题?请记住,在使用val()的所有输入中都要使用parseInt/parseFloat。我没有否决任何人的投票。我甚至不知道怎么做。“我仍在努力解决这个问题,我非常感谢你的帮助,不管它是否有效。”@JakeMcLaughlin-我已经更新了我的答案并提供了一个JSFIDLE。这对我来说是十进制数。好吧,Darren,我把parseFloat((机会+0.5)),但它给出的是19.8,而不是1.98。“怎么解决?”杰克仔细看看你的公式。它应该做什么?你能给我们解释一下这个公式吗?也许我们可以在那里发现错误。@Jake-你能给我提供机会和赌注的值以及期望的输出吗?
chance = parseFloat(chance);
 function updateValues() {

        var chance = parseFloat($('#chance').val());
        var bet = parseFloat($('#bet').val());
        var pay = parseFloat($('#pay').val());
        var profit = parseFloat($('#profit').val());

        // Calculate the new payout.
        var remainder = 101 - chance;
        pay = Math.floor((992/(chance+0.5)) *100)/100;


    }
you can do this:
              profit = bet*pay-bet;
              profit = profit.toFixed(2);