【问题标题】:how to return a number with 2 decimal places all the time from a function如何从函数中始终返回小数点后 2 位的数字
【发布时间】:2015-08-22 13:23:50
【问题描述】:

我有一个随机数生成器函数,它返回一个随机数。看起来问题是有时它只返回一位小数,十分位(我认为它被称为)。我总是希望它输出一个 数字,带有 2 位小数(有时我想要 10.50 时会得到 10.5)。

在我的代码中,我添加了一个加号将其转换为数字。我相信这就是导致百分之一的位置被删除的原因。解决这个问题的最佳方法是什么?

function randomGen() {
    return +(Math.random() * 11).toFixed(2)
}
// console.log(randomGen())
// some times i would get 10.5 when i want 10.50
var num1 = randomGen(); // i want 10.50, for example not 10.5
var num2 = randomGen();
console.log(num1, " ", num2)

console.log(+(num1 + num2).toFixed(2)) 

谢谢

【问题讨论】:

  • randomGen() 函数中的一元运算符没有意义,并且会尝试对该数字进行四舍五入,因此您应该删除它,一切都会好起来的。

标签: javascript random numbers type-conversion


【解决方案1】:

去掉+号,你应该没问题:

function randomGen(){
        return (Math.random()*11).toFixed(2)
    }
     // console.log(randomGen())
     // some times i would get 10.5 when i want 10.50
    var num1 = randomGen(); // i want 10.50, for example not 10.5
    var num2 = randomGen();
    console.log(num1, " ", num2)

    console.log((num1 + num2).toFixed(2)) 

如果您想在 JavaScript 中将字符串转换为数字,请使用“parseFloat”函数。请注意,如果将字符串转换为数字,它将始终截断小数点零(例如 10.50 变为 10.5)。

使用数字进行计算,得到最终结果后,使用 'toFixed' 方法将其转换为字符串,以便显示两位小数。

【讨论】:

  • 这不是把它变成一个字符串吗?我希望它始终返回一个小数点后 2 位的数字。
  • 是的,我会编辑我的答案以澄清
  • var snum1 = randomGen(); var snum2 = randomGen(); console.log(snum1, " ", snum2) var nnum1 = + snum1; var nnum2 = + snum2; console.log(nnum1 + nnum2)
  • snum1 和 snum2 是要显示的字符串,nnum1 和 nnum2 是对数字进行操作。这是一个好方法吗?
  • 只使用Int-values,应该没有问题。您不必将所有内容都转换为字符串。仅当给定类型没有可能的方法来处理某些内容时才转换,例如字符串具有 substr 之类的方法或当您真正需要它时。
【解决方案2】:

在我的代码中,我添加了一个加号将其转换为数字。我相信这就是导致百分之一的位置被删除的原因。解决这个问题的最佳方法是什么?

是 - 不要将其转换为数字!
从数字上看,没有10.50 这样的东西。只有10.5
只有字符串能够保存像10.50 这样的值,而您得到来自toFixed() 的字符串,然后将其转换回数字。

所以我不能说比itd 更好:

松开+号

【讨论】:

    【解决方案3】:

    使用以下内容:

    randomGen(){
       result=(Math.random()*11)
       return parseFloat(result,10).toFixed(2)
        }
    

    【讨论】:

      猜你喜欢
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 2016-06-01
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 2014-05-03
      相关资源
      最近更新 更多