JavaScript 中 toFixed() 方法为什么会返回值是 String 类型

16,173次阅读
没有评论

共计 672 个字符,预计需要花费 2 分钟才能阅读完成。

有没有遇到过需要将数字类型的小数或者整数四舍五入后保留最多一位小数的需求,即

5.45 转化后得到 5.5

5.6 转化后得到 5.6

5 转化后得到 5

Javascript 有一个 toFixed 函数,这个函数是数字类型原型上绑定的方法 Number.prototype.toFixed(),它可以简单的将小数通过参数指定小数位数返回你想要的结果。但是,注意,经过它的处理后返回的不再是 Number 类型了,而是字符串类型。一时难以置信,于是去翻阅 MDN 文档。

该函数的在 MDN 上的描述如下:

一个数值的字符串表现形式,不使用指数记数法,而是在小数点后有 digits(注:digits 具体值取决于传入参数)位数字。该数值在必要时进行四舍五入,另外在必要时会用 0 来填充小数部分,以便小数部分有指定的位数。如果数值大于 1e+21,该方法会简单调用 Number.prototype.toString() 并返回一个指数记数法格式的字符串。

所以要达到所需要的目的,还得自己造轮子,写个方法实现,具体的逻辑是:先判断它是一个小数,然后小数位数不少于两位,进行 toFixed(1) 方法处理后得到一个一位小数的字符串,最后将它强制类型转化为数字类型。实现结果如下:

function parseFloatToOne(n) {n = parseFloat(n)
  if (n.toString().indexOf('.') > -1 && n.toString().split('.')[1].length > 1) {console.log(n)
    return Number(n.toFixed(1))
  }
  return n
}

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计672字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)