JS实现浮点数精确舍入小数点

舍入

舍入是使用数字时最常见的操作之一。

这里有几个对数字进行舍入的内建函数:

//向下舍入:3.1变成3,-1.1变成-2

Math.floor()


//向上舍入:3.1变成4,-1.1变成-1

Math.ceil()


//向最近的整数舍入:3.1变成3,3.6变成4,中间值3.5变成4

Math.round()


//移除小数点后的所有内容而没有舍入:3.1变成3,-1.1变成-1

Math.trunc()(IE浏览器不支持这个方法)

这些函数涵盖了处理数字小数部分的所有可能方法。但是,如果我们想将数字舍入到小数点后n位改怎么办?

例如,我们有1.2345,并且想把它舍入到小数点后两位,仅得到1.23

有两种方法可以实现这个需求:

1.乘除法

例如,要将数字舍入到小数点后两位,我们可以将数字乘以100(或更大的10的整数次幂),调用舍入函数,然后再将其除回。

let num = 1.23456;

//1.23456 -> 123.456 -> 123 ->1.23

alert(Math.round(num*100)/100);


2.函数toFixed(n)将数字舍入到小数点后n位,并以字符串形式返回结果。

let num = 12.34;

//12.3

alert(num.toFixed(1);

这会向上或向下舍入到最接近的值,类似于Math.round():

let num = 12.36;

//12.4

alert(num.toFixed(1));

请注意tofixed的结果是一个字符串。如果小数部分比需要的短,则在结尾添加0

let num = 12.34;

//"12.34000",在结尾添加了0,以达到小数点后五位

alert(num.toFixed(5));

我们可以使用一元加号或Number()调用,将其转换为数字:+num.toFixed(5);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容