【问题标题】:Round Decimals Within Complex Math Calculation复杂数学计算中的四舍五入
【发布时间】:2015-10-30 08:50:29
【问题描述】:

我有一个我一直在处理的变量,我似乎无法按照我想要的方式输出它。这是我目前拥有的变量:

var resource1RatePerHour = Math.ceil(resource1BaseRate1 * Math.pow(resourceIncomeModifier, resource1BuildingLevel) +30) / 3600;

现在每秒在增量计时器上调用一次,但必须按每小时增益来计算(因此除以 3600)。

这一切似乎都有效,但是我的问题是现在有很多我想删除的尾随数字,最好不要使用修剪方法。之前(使用 Math.ceil)我不会得到任何小数。如果我在 Math.ceil 方程中添加“/ 3600”,则整个计算将不起作用,因此它必须保持在 Math.ceil 和 Math.pow 之外。

【问题讨论】:

  • 我猜toFixed 就是你要找的东西
  • 如果我想要 2 位小数,那就可以了。 :) 55.67 在这样的例子中应该输出 55​​ 。所以除非我误解了 toFixed?
  • @hindmost 你最初对 toFixed 是正确的,我不知道你可以传递一个参数来指定要显示的小数位数。我使用 Yeldar 提供的答案整理了一个解决方法。

标签: javascript math rounding


【解决方案1】:

可以使用 JavaScript toFixed() 函数:

var x = 123.45 * 234.56;

document.body.innerHTML += x.toFixed(0) + "<br/>";
document.body.innerHTML += x.toFixed(1) + "<br/>";
document.body.innerHTML += x.toFixed(2) + "<br/>";
document.body.innerHTML += x.toFixed(3) + "<br/>";
document.body.innerHTML += x.toFixed(4) + "<br/>";
document.body.innerHTML += x.toFixed(5) + "<br/>";

【讨论】:

  • 谢谢,这个,稍加修改,对我有用!我从来不知道您可以像这样将参数传递给 toFixed 以显示您想要的小数位数。使用这个有什么缺点吗?我目前正在使用:document.getElementById("HTML_resource1Ticker").innerHTML = resource1Ticker.toFixed(2);
  • @Deadmano None,这就是这个函数应该做的。它也适用于所有浏览器。请注意,此函数返回一个字符串而不是数字。
  • 非常适合我的需求!顺便说一句,不想为琐碎的事情提出另一个问题,您知道如何将诸如“93958769423.9”(即 93,958,769,423)之类的数字转换为使用 B(十亿)分隔符吗?因此,在这种特定情况下,数字将是 93B,或 94B 向上取整。我真的很感激,如果你能分享我如何为 K、M 甚至 T(万亿)做同样的事情。当我使用指数时,它们会变得异常高!
  • @Deadmano 我猜,您将不得不提出一个新问题。这就是它的工作原理。我会尽力帮助你,其他人也能回答。简而言之,我认为你将不得不手动实现它,我不知道JS中有任何这样的功能。
【解决方案2】:

如果你只是想以漂亮的格式显示它,我认为转换为字符串会删除它们。

var x = 1.245000
var niceDisplay = x.toString() // "1.245" 

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 1970-01-01
    • 2013-11-19
    • 2022-01-09
    • 2012-09-26
    • 1970-01-01
    • 2020-12-16
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多