Chrome - Javascript:负指数计算对于 > -3 是错误的 [重复]

Posted

技术标签:

【中文标题】Chrome - Javascript:负指数计算对于 > -3 是错误的 [重复]【英文标题】:Chrome - Javascript: Negative Exponent Calculation is wrong for > -3 [duplicate] 【发布时间】:2019-05-10 15:37:40 【问题描述】:

我正在做 React 项目。

我有一个用例,我必须在 Number <Input> 标签上添加 step 属性。此步骤属性将是动态的。基于数组数据。

数组数据为[ precision: 2 , precision: 4 , precision: 5 ]

所以我生成这样的步骤:

<input type="number" step= 10 ** -precision  >

这里10 ** -precision会输出:

0.01 表示精度 = 2

0.0001 表示精度 = 4

0.00001 精度 = 5

这是我想要的,它在 Firefox 和 Opera 中运行良好。

但是 Chrome 是个问题,Chrome 对10 ** -4 的输出是0.00009999999999999999。这对我来说是个问题。

Chrome 的输出是正确的,直到 10 ** -3 之后打印错误。

我的 chrome 版本是:74.0.3729.131 和操作系统:MacOs Mojave:10.14.4

【问题讨论】:

使用 chrome,我从 10 ** -4 得到 .0001;也许你可以试试 Math.round(var);? @Amy 不重复。这与 JS 无关。每种编程语言输出0.1 + 0.2 -&gt; 0.30000000000000004 @shadoe2020 你的 chrome 版本是什么?我的是74.0.3729.131 73.0.3683.103(官方版本)(64位) Floating-Point Questions Are Endless on ***.com 【参考方案1】:

也许这是一个浮点精度问题。 如果您只需要将它作为道具传递给标签,您可以尝试 &lt;input type="number" step= (10 ** -precision).toFixed(precision) /&gt;

【讨论】:

是的,这是可能的解决方案。将检查并投票。但是这个问题真的很奇怪。 Firefox 和 Opera 完美输出 我同意这很奇怪(铬也可以正常工作),我无法完全解释(js 引擎实现?我不知道该说什么)。让我知道toFixed 技巧是否有效

以上是关于Chrome - Javascript:负指数计算对于 > -3 是错误的 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript基本

JavaScript:试图理解计算指数值的递归函数的 Else 语句

如何在 Clojure 中创建具有负指数的幂函数?

PCL::RegionGrowing 负指数

如何在 Python 中将负指数数转换为十进制数?

274. H 指数