1

好的,所以我的代码工作正常,但是当为#chance 输入小数即 60.1、60.2、60.3 等时,它会破坏利润和支付。

例如:60% 输入为机会,1 为下注。它返回 1.65 的工资和 0.65 的利润。这都是正确的。

但是当我输入 60.1 时,它返回 16.5(小数点错误)和 15.5 以获取利润。16.5 似乎是一个简单的修复,但我知道如何修复它,但我不知道为什么它会返回 15.5 以获取利润,并认为如果我固定支付它可能会解决利润问题。

怎么了?

谢谢。

<script>
    $(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/parseFloat((chance+0.5))) *100)/100;


            // Calculate the new profit.
            profit = bet*pay-bet;
                            profit = profit.toFixed(6);


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


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


    });
</script>
4

3 回答 3

2
parseFloat((chance+0.5))

看起来很不对劲。chance是一个字符串,因此+运算符将执行字符串连接。当你输入60时,它变成

parseFloat("60"+0.5) === 600.5

而当你输入60.1它是

parseFloat("60.1"+0.5) === 60.1

你可能想要

(992/(parseFloat(chance)+0.5))*100
// or
(992/parseFloat(chance)+0.5)*100
// or
992/parseFloat(chance)*100+0.5
// or something along these lines
于 2013-06-27T00:51:02.857 回答
1

更改parseFloat((chance+0.5))(parseFloat(chance)+0.5).

实际上,我也看不出它为什么与60. chance,作为文本字段的值,是一个字符串:"60". 字符串不相加,它们连接:"60" + 0.5is "600.5",与"60" + "0.5".

于 2013-06-27T00:49:23.337 回答
0

尝试这样的事情:

$(document).ready(function(){
  function updateValues(){
    var chance = $('#chance').val();
    var bet = $('#bet').val();
    var pay = $('#pay').val();
    var profit = $('#profit').val();
    pay = ((992/Math.floor(+chance+0.5))/10).toFixed(2);
    profit = (bet*pay-bet).toFixed(6);
    $('#chance').val(chance);
    $('#bet').val(bet);
    $('#pay').val(pay);
    $('#profit').val(profit);
  }
  $('#chance').keyup(updateValues);
  $('#bet').keyup(updateValues);
  $('#pay').keyup(updateValues);
  $('#profit').keyup(updateValues);
});

你的数学有问题。

笔记:

您不必使用parseInt()parseFloat()将字符串转换为数字。+字符串前面的数字符号会将其转换为数字。

有关详细信息,请参阅http://jsfiddle.net/PHPglue/JQJMD/ 。

于 2013-06-27T01:54:53.477 回答