首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript parseFloat()问题

JavaScript parseFloat()问题
EN

Stack Overflow用户
提问于 2013-06-27 08:45:28
回答 3查看 2.2K关注 0票数 1

好吧,所以我的代码运行良好,但当输入小数,即60.1,60.2,60.3等#机会,它搞砸了利润和支付。

例如: 60%表示机会,1表示下注。它的薪酬回报率为1.65,利润回报率为0.65。这些都是正确的。

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

怎么了?

谢谢。

代码语言:javascript
复制
<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>
EN

回答 3

Stack Overflow用户

发布于 2013-06-27 08:51:03

parseFloat((chance+0.5))

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

代码语言:javascript
复制
parseFloat("60"+0.5) === 600.5

而当您输入60.1时,它是

代码语言:javascript
复制
parseFloat("60.1"+0.5) === 60.1

你可能想要

代码语言:javascript
复制
(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
票数 2
EN

Stack Overflow用户

发布于 2013-06-27 08:49:23

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

实际上,我也不明白它为什么要和60一起工作。作为文本字段的值,chance是一个字符串:"60"。字符串不会相加,它们会连接在一起:"60" + 0.5"600.5",与"60" + "0.5"相同。

票数 1
EN

Stack Overflow用户

发布于 2013-06-27 09:54:53

尝试如下所示:

代码语言:javascript
复制
$(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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17332798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档