如果想精确计算,最简单的方法是使用健壮的第三方库。如果想自己写,无非就是把第三方库踩过的坑再踩一遍,何必呢(除非学习研究)?如果要自己写,有几种方式来处理:换算成整数。比如确定是 8 位小数,可以 \( \times 10^8 \) 之后保存和计算机,显示的时候再 \( \div 10^8 \) 并四舍五入到 8 位小数(比如 .toFixed(8))。保存和计算的时候就把整数和小数部分分开,都用整数来保存,计算的时候注意进/退位的处理。在某些语言中,是通过二进制划位来保存,然后统一进行计算的。在 JS 中不太好用二进制,可以用字符串来保存,并拆解开来计算。如果想深入了解或研究,可以去研究一下浮点数存储和计算的相关标准。如果只是应用,还是找个靠谱的第三方库来得快。
如果想精确计算,最简单的方法是使用健壮的第三方库。如果想自己写,无非就是把第三方库踩过的坑再踩一遍,何必呢(除非学习研究)?
如果要自己写,有几种方式来处理:
.toFixed(8)
)。如果想深入了解或研究,可以去研究一下浮点数存储和计算的相关标准。如果只是应用,还是找个靠谱的第三方库来得快。