You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中toFixed(3)无法获取小数点后最后三位的解决办法

解决方案

你需要提取小数点后的最后三位,而toFixed(3)的作用是保留小数点前的数字加上前三位小数,因此无法满足需求。可以通过字符串处理实现目标效果:

var mynumber = 800.60000305176541;
// 转换为字符串,规避浮点数精度问题
var numStr = mynumber.toString();
// 分割整数与小数部分
var parts = numStr.split('.');
var integerPart = parts[0];
var decimalPart = parts[1] || '';

// 截取小数部分最后三位,不足三位时补0
var lastThreeDecimals = decimalPart.slice(-3).padStart(3, '0');
// 拼接成目标格式
var changenumber = `${integerPart}.${lastThreeDecimals}`;
// 若需数字类型,可转为Number:changenumber = Number(changenumber);

console.log(changenumber); // 输出 "800.541"

补充说明

  1. 先转字符串是为了避免JS浮点数精度存储导致的小数部分失真;
  2. slice(-3)用于直接截取字符串的最后三位字符,padStart(3, '0')保证当小数部分不足三位时自动补零(比如数字为800.12时,会处理为800.012);
  3. 如果你的数字可能出现科学计数法格式(如极大/极小数值),可以先将其转为普通字符串再处理:
function toNonExponential(num) {
  var m = num.toExponential().match(/\d(?:\.(\d*))?e([+-]\d+)/);
  return num.toFixed(Math.max(0, (m[1] || '').length - m[2]));
}

var mynumber = 800.60000305176541;
var numStr = toNonExponential(mynumber);
// 后续分割、截取步骤同上

内容的提问来源于stack exchange,提问作者zaknio55

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:54:22