Javascript val()问题
当我为chance输入一个小数点时,它返回NaN作为工资和利润。知道为什么吗?我还需要做些什么才能将利润四舍五入到小数点后的第二位 谢谢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();
$(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);