【问题标题】:How to round off parseFloat results in Jquery/Javascript?如何在 Jquery/Javascript 中舍入 parseFloat 结果?
【发布时间】:2012-04-13 09:32:35
【问题描述】:

我将如何从带有parseFloat 结果的文本字段中舍入一个值?此应用程序基本上总结了所有单选按钮单击时的值,并在文本框中显示总和。

如果单选按钮的值为整数,则下面的代码可以完美运行,但是如果我想在单选按钮上有一个浮点值,则总值将有一个100.0000000679,而它应该是100。任何提示将不胜感激。提前致谢。

function calcscore(){
  var score = 0;
  $(".calc:checked").each(function(){
    score+=parseFloat($(this).val(),10);
  });
  $("input[name=openingsum]").val(score);
}
$().ready(function(){
    $(".calc").change(function(){
        calcscore();
    });
});

HTML 代码:

<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No

【问题讨论】:

标签: javascript jquery rounding parseint parsefloat


【解决方案1】:

起初,我认为您为我们提供了一个与预期不同的示例。如果您告诉我们有关获取100.0000000679 的信息并且在您的代码中只有1.6666666666666666666666666666667 的值,那就有问题了:)

所以我希望你的问题只是以正确的方式四舍五入。为此,您可以使用.toFixed()

example on jsfiddle

HTML:

<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="0" />No
<br>
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No
<br>
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="0" />No
<br>
<input type="text" name="openingsum">​

JAVASCRIPT:

function calcscore(){
  var score = 0;
  $(".calc:checked").each(function(){
    score+=parseFloat($(this).val(),10);
  });
  score = score.toFixed(2);
  $("input[name=openingsum]").val(score);
}
$().ready(function(){
    $(".calc").change(function(){
        calcscore();
    });
});​

【讨论】:

  • Neysor:再次感谢您为我的工作做出的又一重大贡献。与往常一样,您一直非常迅速,并且是我工作的主要贡献者。每次我将它应用到我的工作中时,您的输入总是令人惊叹。您的解决方案非常值得推荐给像我这样的其他新手。谢谢。
  • @Davinchie_214 没问题!我在这里注册以帮助人们。但正如我现在看到的那样,djmadscribble 为您提供了正确的提示。也许下次您对此有更深入的了解。如果你有,那么也许你可以尝试写下在这样做时发生的错误:)
  • 顺便说一下 Neysor,我上面使用的值仅用于模拟目的。我打算以这种方式使用它,以便更好地解释我想对上述问题发生什么。还有一件事,当我将 parseFloat 改回 parseInt 时,总分只显示 99,而它应该是 100。这可能是一个小故障,或者我可能又做错了什么。但不要混淆,我的现在正在工作,只是当我将其更改为 parseInt 时,程序出错了。感谢您的意见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 2021-05-16
  • 2020-09-25
  • 1970-01-01
  • 2019-04-08
相关资源
最近更新 更多