进日,应项目开发需求,需在前台用JS写一个表单中的一列数据的运算,如下图所示↓↓↓↓,
如果分配比例的总和超过100%,系统做出相对应的提示或者警告,
这列数据的实际数据是0.2,0.1,0.15等这样的,只是显示的时候是用20%,10%,15%这样显示的,这列数据我做加法运算的时候,
出现了超过100%的情况,也就是超过了1,我以为这些个数字有问题,先看了一遍数字没问题,然后我用windows自带的计算器算了一遍,是1;随后我拿出了我的手机算了一遍,是1;在用pl/SQL developer算了一遍,是1;用Java程序算了一遍,是1;最后我用windows下的命令行模式算了一遍,还是1;我开始怀疑这结果并不是这数据导致的,难道是js本身存在的毛病?alert出来的结果让我的大吃一惊,怎么会有这样的东西存在,结果是:1.00000001,我忘记是几个零,小数点后面大概就是这么一串东西,让人很头疼的东西;究其原因,原来js本身就存在这样一个问题,是底层导致的,底层基础决定上层建筑,多么痛的领悟,关于底层什么样,本人这里就不在做多余的赘述了,有兴趣的朋友可以多去了解了解。
对于这个问题怎么处理呢,方法呢也是很多,本人不才,实践了一二,希望对遇到此问题的朋友能有帮助:
1、如果的你问题和我遇到的差不多,结果是 num = 1.0000001,类似这样的,直接对结果处理,取自己想要的部分,就直接 num.toFixed(2);
1 var num = 0.00; 2 num.toFixed(2);
2、如果你需要在计算的时候处理,得到一个没毛病的想要的结果,比如 1.00这样的,在计算的过程中处理,那就(num1 * m+ num2 * m) / m这样处理,这里的1000取决于你自己num1和num2的小数点后的位数,自己可以试试,多试
1 var num1 = 0.324;
2 var num2 = 0.232;
num1*1000 + num2*1000;
肯定还有高级的方法,或者是更优的方法,希望评论,我也想涨姿势 u·W·u