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

TypeScript中Number类型变量如何正确去掉小数点完成乘法运算?

问题原因

这是JavaScript采用的IEEE 754双精度浮点数存储标准导致的通用问题。
JS中所有数字都以64位双精度浮点数的形式存储,十进制的有限小数转换为二进制时,很多会变成无限循环小数,存储时会自动截断保留固定精度,导致实际存储的值和字面量的真实值存在微小误差。288.65就是这类无法被二进制精确表示的小数,它的实际存储值本身略小于真实的288.65,乘以100之后误差被放大,就得到了28864.999999999996这个结果。

可用解决方案
  • 方案1:通过字符串替换直接去掉小数点,适合所有明确需要移除小数点的场景
function removeDecimal(num) {
  const numStr = num.toString()
  return numStr.includes('.') ? Number(numStr.replace('.', '')) : num
}
// 调用示例:removeDecimal(288.65) 返回 28865
  • 方案2:对乘法结果做四舍五入,适合提前知晓小数位数的场景
console.log(Math.round(288.65 * 100)) // 输出 28865
  • 方案3:使用toFixed方法处理精度误差后转换为数字
console.log(Number((288.65 * 100).toFixed(0))) // 输出 28865

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:24:02