【问题标题】:How to deal with overflow in divide operator如何处理除法运算符中的溢出
【发布时间】:2019-06-11 06:29:27
【问题描述】:

这是我的问题: 我有十进制数字,如:var a = 0.5556 我想将a 与 86400 相乘:var b = a * 86400 = 48003.84; 之后,我想将b 与 86400 分开:var c = b / 86400 = 0.5556018518518518 c 的结果不等于 a 值。 我的问题是如何使c 的值等于a 在javascript 中的值。有人可以帮我解决这个问题吗?

Javascript

a = 0.5556;

b = a * 86400

预期:c = b / 86400 = a

【问题讨论】:

  • 我想要精确的结果等于a 精确。我在electron 平台上编码,我曾尝试过a.toPrecision(),但它在这个平台上不起作用。

标签: javascript operator-overloading operators decimal divide


【解决方案1】:

如果您想获得精确的输出,直到小数点后一定位数,您可以使用toPrecision() 方法。

var a = 0.5556;
var b = (a * 86400).toPrecision(5);
var c = (b / 86400).toPrecision(5);

console.log(a)

【讨论】:

    【解决方案2】:

    您遇到了定点表示和算术的限制。一般在比较浮点数时,会检查两个数是否在一定范围内。

    如果你不介意牺牲效率,你可以使用库来实现任意精度的浮点,例如enter link description here

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多