【问题标题】:Formatting number in javascript(typescript) [duplicate]在javascript(typescript)中格式化数字[重复]
【发布时间】:2019-12-26 00:20:43
【问题描述】:

在 javascript 或 Typescript 中有没有办法格式化十进制?

例如:

  • 1.33 => 1.35

  • 1.32 => 1.35

我发现的只是格式化为 2 位小数,但我需要将其格式化为最接近的 .05

【问题讨论】:

  • 1.32 比 1.35 更接近 1.3。
  • @Drasko 你的问题不完全一样试试这个小提琴以获得确切的答案jsfiddle.net/fn3tso4k/1
  • 是的,我的错误,应该是四舍五入到 1.30,sry :)

标签: javascript typescript


【解决方案1】:

此函数使用Math.round 并乘以除以 0.05,因为它是最接近的 0.05。

function tN(n) {
    return Math.round(n / 0.05) * 0.05;
}

console.log(tN(1.33));

console.log(tN(1.32));

console.log(tN(0.05));

console.log(tN(-1.08));

如果所有输出都必须以 5 结尾:

function tN(n) {
    return n % 0.1 > 0.05 ? Math.floor(n / 0.05) * 0.05 : Math.ceil(n / 0.05) * 0.05;
}

console.log(tN(1.33));

console.log(tN(1.32));

console.log(tN(0.05));

console.log(tN(-1.08));

【讨论】:

  • 请编辑您的答案。根据问题的描述,这是错误的。在问题中写的是1.32 -> 1.35,但在您的答案中是1.3。您已经创建了一个将数字四舍五入为 0.05 的函数,为了获得问题想要的逻辑,您应该使用 Math.ceil 而不是 Math.round
  • Math.ceil 不起作用,因为输入 1.08 会得到 1.1。
  • 对于 1.32,您仍应提供 1.35,因此答案不准确。在问题中,从 0.01 到 0.05 的数字应该指向 0.05,从 0.06 到 0.09 的数字也应该指向 0.05。
  • 我创建了一个单独的函数,它只输出以 5 结尾的数字。
  • 这是我的错误... 1.32 应该舍入到 1.30 sry :D
猜你喜欢
  • 2012-01-28
  • 2020-07-04
  • 2015-06-07
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 2013-12-10
相关资源
最近更新 更多