i have use the following code snippet in my working scenorio of JavaScript.
var t = 0.000029411764705882354 * 34000;
the result of t is 1 . i want to get the exact multiplication result instead of 1 as
0.9999999999972.
i have use the following code snippet in my working scenorio of JavaScript.
var t = 0.000029411764705882354 * 34000;
the result of t is 1 . i want to get the exact multiplication result instead of 1 as
0.9999999999972.
首先,它的计算结果不是1。表达式:
29411764705882354 * 34
(去掉十次方的乘法)实际上给了你:
1000000000000000036
最重要的是,除非你有无限的存储能力,否则没有任何编码方案可以代表每一个数字。您需要习惯这样一个事实,即浮点通常是您所要求的近似值 - 一些数字可以精确表示,但是在所有实数的域中,它们形成了一个非常小的部分: -)
话虽如此,有几种方法可以解决它。
首先,您可以使用 bignum 类型库(例如 C 中的 MPIR)为您提供任意(非无限)精度算术。除了非理性之外,这将处理大多数情况。
其次,您可以继续使用浮点数,但请注意它不准确,您可能需要打印出四舍五入的数字。例如,0.9999999999972
四舍五入到 <=11 十进制(不重要)数字会给你1
.