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 -> 0.30000000000000004
@shadoe2020 你的 chrome 版本是什么?我的是74.0.3729.131
73.0.3683.103(官方版本)(64位)
Floating-Point Questions Are Endless on ***.com
【参考方案1】:
也许这是一个浮点精度问题。
如果您只需要将它作为道具传递给标签,您可以尝试
<input type="number" step= (10 ** -precision).toFixed(precision) />
【讨论】:
是的,这是可能的解决方案。将检查并投票。但是这个问题真的很奇怪。 Firefox 和 Opera 完美输出 我同意这很奇怪(铬也可以正常工作),我无法完全解释(js 引擎实现?我不知道该说什么)。让我知道toFixed
技巧是否有效以上是关于Chrome - Javascript:负指数计算对于 > -3 是错误的 [重复]的主要内容,如果未能解决你的问题,请参考以下文章