Javascript 两个不同值中的多重应用

Javascript 两个不同值中的多重应用,javascript,jquery,html,math,Javascript,Jquery,Html,Math,我在JavaScript的工作场景中使用了以下代码片段 var t = 0.000029411764705882354 * 34000; t的结果是1。我想得到精确的乘法结果,而不是1 0.999999999972。首先,该值不等于1。表达方式: 29411764705882354 * 34 (去掉十次幂的乘法)实际上可以得到: 1000000000000000036 除此之外,除非您有无限的存储能力,否则没有任何编码方案可以表示每个数字。您需要习惯这样一个事实,即浮点通常是您所要求的近似

我在JavaScript的工作场景中使用了以下代码片段

var t = 0.000029411764705882354 * 34000;
t的结果是1。我想得到精确的乘法结果,而不是1

0.999999999972。

首先,该值不等于1。表达方式:

29411764705882354 * 34
(去掉十次幂的乘法)实际上可以得到:

1000000000000000036
除此之外,除非您有无限的存储能力,否则没有任何编码方案可以表示每个数字。您需要习惯这样一个事实,即浮点通常是您所要求的近似值-一些数字可以精确表示,但在所有实数的域中,它们形成了一个非常小的部分:-)

话虽如此,有两种方法可以解决这个问题

首先,您可以使用bignum类型库(例如C中的MPIR)为您提供任意(而不是无限)精度的算法。这将处理除非理性之外的大多数情况


第二,您可以继续使用浮点,但要注意它并不精确,您可能需要打印出四舍五入的数字。例如,
0.99999999972
四舍五入到一些有用的链接,您无法得到准确的结果,因为JavaScript中的每个数字都是64位浮点<代码>0.000029411764705882354不能在base-2中准确表示。您必须使用一些库以十进制表示它们。