一个未知的数字如何转换成字符串仍保留小数点后面的值?

一个未知的数字,也不知道带不带小数点,带多少位

要把它转换成字符串

小数点不能漏掉

小数点后面有可能是很多个0

例如:18,20.3,3.66,3.001,3.0000

常用的是:str = num + ''; 但是很遗憾 3.0000 + '' = 3

有什么办法可以解决这个问题么?

阅读 2.3k
3 个回答

在Chrome控制台试了下,小数点后的末尾零都会被自动舍弃。所以建议你拿到数值之后,还需要拿到这个数后有几位小数位。然后调用toFixed方法就行了。
clipboard.png

你会这么问说明你没搞明白数字在js里是怎么存的。实际上不仅js,大多语言都一样,不关心、不区分也不会存储一个小数字面上小数部分末尾有几个0,3.0和3.00按IEEE754规范在内存里是一模一样的。你非要对此进行区分,就只能改用字符串存储,或使用自己设计的数据结构。但是一般不会有你提到的这种需求,你可以把你的使用场景放上来,应该有别的解决方案。


如果只是保留固定小数位数的话使用楼上说的toFixed就行了

晓得了,我得到的原本就是字符串,所以才会出现小数点全是0的情况,根本不需要转换。。。谢谢楼上两位的解答

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题