JavaScript保留小数点后N位的多种实现方法

作者:木棉

时间:2026-10-29

浏览:468

本文详细介绍JavaScript中保留小数点后N位的多种实现方式。涵盖原生toFixed函数的使用、基于Math.round的自定义四舍五入函数,以及强制补零和科学计数法处理。通过具体代码示例解析参数含义与执行逻辑,帮助开发者根据需求选择合适方案。

文章目录

JavaScript保留小数N位概述

在JavaScript开发中,若需实现保留小数点后N位的功能,最常用的方法是调用数字类型的toFixed函数。

具体代码实现如下:

<script language="javascript">
document.write("<h1>JS保留两位小数例子</h1><br>");
var a=2.1512131231231321;
document.write("原来的值:"+a+"<br>");
document.write("两位小数点:"+a.toFixed(2)+"<br>四位小数点"+a.toFixed(4));
</script>

自定义四舍五入函数实现

除了直接使用内置方法,还可以编写一个通用的四舍五入转换函数,实现逻辑如下:

代码如下:

function round(v,e){
var t=1;
for(;e>0;t*=10,e--);
for(;e<0;t/=10,e++);
return Math.round(v*t)/t;
}

该函数的参数定义如下:

v表示需要转换的数值

e表示希望保留的小数位数

函数内部包含两个for循环,这是实现逻辑的核心部分。

第一个for循环用于处理小数点右侧的情况,即保留小数点后多少位。

第二个for循环用于处理小数点左侧的情况,即保留小数点前多少位。

for循环的作用是计算倍数t,即数值v应当放大或缩小的倍数。

此处利用了for循环的两个特性:条件判断与计数器累加(循环执行)。

当变量e满足循环条件时,for循环继续执行;每次循环中e进行累加(或累减),这同时为终止循环制造条件,并在此过程中计算t的值。

最后,利用原生的Math.round方法对经过放大或缩小处理后的v进行计算,再将结果按正确的倍数还原。

多种保留小数实例演示

以下是各种保留两位数的具体实现实例:

代码如下:

<script type="text/javascript">
//保留两位小数
//功能:将浮点数四舍五入,取小数点后2位
function toDecimal(x) {
var f = parseFloat(x);
if (isNaN(f)) {
return;
} 
f = Math.round(x*100)/100;
return f;
} 
//制保留2位小数,如:2,会在2后面补上00.即2.00
function toDecimal2(x) {
var f = parseFloat(x);
if (isNaN(f)) {
return false;
} 
var f = Math.round(x*100)/100;
var s = f.toString();
var rs = s.indexOf('.');
if (rs < 0) {
rs = s.length;
s += '.';
} 
while (s.length <= rs + 2) {
s += '0';
} 
return s;
} 
function fomatFloat(src,pos){
return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);
} 
//四舍五入
alert("保留2位小数:" + toDecimal(3.14159267));
alert("强制保留2位小数:" + toDecimal2(3.14159267));
alert("保留2位小数:" + toDecimal(3.14559267));
alert("强制保留2位小数:" + toDecimal2(3.15159267));
alert("保留2位小数:" + fomatFloat(3.14559267, 2));
alert("保留1位小数:" + fomatFloat(3.15159267, 1));
//五舍六入
alert("保留2位小数:" + 1000.003.toFixed(2));
alert("保留1位小数:" + 1000.08.toFixed(1));
alert("保留1位小数:" + 1000.04.toFixed(1));
alert("保留1位小数:" + 1000.05.toFixed(1));
//科学计数
alert(3.1415.toExponential(2));
alert(3.1455.toExponential(2));
alert(3.1445.toExponential(2));
alert(3.1465.toExponential(2));
alert(3.1665.toExponential(1));
//精确到n位,不含n位
alert("精确到小数点第2位" + 3.1415.toPrecision(2));
alert("精确到小数点第3位" + 3.1465.toPrecision(3));
alert("精确到小数点第2位" + 3.1415.toPrecision(2));
alert("精确到小数点第2位" + 3.1455.toPrecision(2));
alert("精确到小数点第5位" + 3.141592679287.toPrecision(5));
</script>

以上即为全部相关代码示例,实现过程相对简单,希望以上内容能对大家有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章