当前位置: 首页 > 知识库问答 >
问题:

Javascript“基本”小数和错误结果[重复]

宰父衡
2023-03-14

JS的简单数学在使用小数时会出错。

 console.log(.6+.6+.6) //1.7999999999999998

一个可能的解决方案是把每个数字乘以一百万,然后再除以一百万,但似乎一点效率都没有。

console.log(((.6*1000000)+(.6*1000000)+(.6*1000000))/1000000) //1.8

如果不是必须的,建议使用其他库,如https://github.com/mikemcl/bignumber.js/或https://github.com/mikemcl/decimal.js/或https://mathjs.org/,您推荐哪一个?

目前我认为最好只乘以1000000然后再除以它,这样我就不必为“基本”操作安装一个完整的模块...但是,JS中的基本操作并不是基本的。

共有1个答案

蒋权
2023-03-14

这是fix:

js lang-js prettyprint-override">console.log( parseFloat((.6+.6+.6).toFixed(2)) )

// Or

var a = 0.6;
var b = 0.6;
var c = 0.6;

var R = parseFloat( (a + b + c).toFixed(2) );

console.warn("Result :", R)


// Final solution is method 
// Array used for args[]

function sumFloats (items) {

  var R = 0;

  for (var x = 0;x < items.length;x++) {
  console.warn(">>: ", items[x]);
  R += parseFloat( (items[x]).toFixed(2) );
  }

  R = parseFloat(R.toFixed(2));
  console.warn("Result from function: ", R);
  return R;

}

var a = 0.6;
var b = 0.6;
var c = 0.6;
var ResultFromFunc = sumFloats ([0.6, 0.6, 0.6]);
var ResultFromFunc2= sumFloats ([a, b, c]);
 类似资料:
  • 本文向大家介绍javascript 小数乘法结果错误的处理方法,包括了javascript 小数乘法结果错误的处理方法的使用技巧和注意事项,需要的朋友参考一下 一、用js计算 12.32 * 7  结果是多少? 答案:86.24000000000001   为什么会出现这种问题?怎么解决? js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理。 以上的计算可以改为: 1

  • 本文向大家介绍javascript数组去重小结,包括了javascript数组去重小结的使用技巧和注意事项,需要的朋友参考一下 前言 最近为了换工作,准备下面试,开始回顾复习JavaScript相关的知识,昨天下午想到了数组去重的相关方法,干脆整理出几篇JavaScript算法文章,以备后用,此系列文章不定篇数,不定时间,想到哪写到哪,不保证正确性,不保证高效率,只是谈谈个人理解,如有错误,请诸位

  • 导入java.util.Scanner;公共类GroupActivity{公共静态void main()

  • 我试图用这个php脚本创建一个更改密码页面。我希望能够告诉用户他们是否输入了正确的用户名和密码,以便进行更改。当我检查行时,无论它是否返回行,我总是得到以下错误: 警告:mysqli_num_rows()要求参数1为mysqli_结果,给定布尔值 这是我的代码: 注意:我确实在手之前建立了一个连接,只是似乎没有必要在这里进行连接。此外,如果我输入了正确的信息,它将根据需要更改密码,但仍会显示错误消

  • 我试图从我的数据库中得到一些数据,但我不会得到正确的结果。 我的方法: 所以应该有一个确切的结果,但我从控制台得到的全部是:日期的范围是从今天(6月12日-2周) CEST 2012年Tue Jun 12 14:49:11 2012年东部时间5月30日星期三14:49:11

  • 我有一个有82,535行的表,其中65,087行按ID是唯一的。当我拉取整个结果集82,535并复制到Excel并删除重复项时,它显示有17,448个重复项。但是当我使用下面的查询时,我得到了不同的结果: 此查询返回值17364 我确定唯一的的数目是65,087