【问题标题】:Javascript - How to display whole number with one decimal point after being roundedJavascript - 如何在四舍五入后显示带一位小数的整数
【发布时间】:2020-05-11 16:22:28
【问题描述】:

我正在使用映射函数来返回四舍五入的小数点。有一些数字会返回整数,例如index 2. 4 and index 3. 1 我试图让这些个位数的数字返回小数点。例如,拥有index 2: 4 -> 4.0; index 3. 1 -> 1.0

我已经尝试过使用toFixed 函数,但它会影响所有其他有小数点的数字。如何在不影响数组中其他索引的情况下返回 4.0 和 1.0?

我希望这些数字作为整数返回,当仅使用 toFixed 时,我将这些数字作为字符串返回

我的预期结果是:4.4, 4.6, 4.0, 1.0, 1.7

let sumRounded = sumPercentage.map(function (percent) {
  return Math.round(percent * 10) / 10;
});

原始控制台日志:

0: 4.4
1: 4.6
2: 4
3: 1
4: 1.7

let sumRounded = sumPercentage.map(function (percent) {
  return Math.round((percent * 10) / 10).toFixed(1);
});

使用 toFixed 后的控制台日志

0: "4.0"
1: "5.0"
2: "4.0"
3: "1.0"
4: "2.0"

【问题讨论】:

  • 删除round?
  • 是否可以检查数字是否为正确的整数,然后应用您的函数? JS 中为此提供了Number.isInteger()
  • @Teemu 有办法处理圆形吗?我四舍五入,因为我需要这些数字是整数才能显示在我正在使用的图表上。使用 toFixed 时,它们以字符串形式返回
  • @VedantBang 我不确定我是否正确理解了您的问题,但我希望这些数字以整数形式返回
  • 您必须为此使用字符串。数字没有小数点或精度,它们只是二进制值,当它们显示时,它们会得到最紧凑的格式。您必须使用toFixed() 来格式化它们,这需要使用字符串。

标签: javascript arrays numbers


【解决方案1】:

你的括号给你错误的结果:

Math.round((percent * 10) / 10)

这会四舍五入为整数,这就是为什么所有结果都以“.0”结尾的原因。你想要:

return (Math.round(percent * 10) / 10).toFixed(1);

【讨论】:

  • 感谢您的回答。这是正确的,但这给我带来了我上面提到的一个问题。 toFixed 正在将我的整数转换为字符串,我不太熟悉 javascript,并且在将这些字符串转换回整数时遇到了问题,这就是我想使用舍入的原因。有没有办法在我目前使用的圆角内嵌文本中执行此操作?
  • @mattjkj 如果你想显示像1 这样带小数点的整数,你必须使用.tofFixed(1)。如果您需要将字符串转换回数字,请使用Number(myNumString)
  • Number(myNumString) 转换回小数后,结果再次显示没有小数点的1。对于我特别使用的图形库,我需要这些字符串显示为小数
  • @mattjkj 重复一遍,在 JavaScript 中将像 1 这样的整数显示为 1.0 的唯一方法是将数字转换为字符串。您正在使用的这个图库是什么,什么时候需要1.0 而不是1?这听起来不对。
猜你喜欢
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 2017-03-26
相关资源
最近更新 更多