数字输入错误地接受带小数位的浮点数

问题描述 投票:9回答:3

<form>
  <input type="number" step="1" required>
  <input type="submit">
</form>

在上面的代码段中,如果要插入,则>]

0.0000001

在输入数字时,您不能提交表格:“ step”属性可以防止这种情况。

但是如果您插入

0.00000001

它可以在Chrome / Chromium中使用!为什么在验证输入时似乎只读取前七个小数位?是否在任何地方对此进行了记录,我该怎么做以防止这种情况?

我测试了Firefox,它不接受任何此类值。它不能是浮点精度问题(例如0.1 + 0.2),仅与更多的十进制数字有关

0.30000000000000004 === 0.1+0.2
在上面的代码段中,如果在输入的数字中插入0.0000001,则无法...
html chromium
3个回答
2
投票

看起来像是镀铬的问题,为防止我可以建议您限制用户的操作:


1
投票

虽然这肯定是您所拥有数字的错误,但实际上可以防止其他步骤/值组出现问题。小数舍入有一些核心问题,要想进行完美的步骤验证就不那么容易了,至少没有那么精确。实际上,如果您查看Firefox源代码,则可以找到此注释https://dxr.mozilla.org/mozilla-central/source/dom/html/HTMLInputElement.cpp#4654


0
投票

只是一个简单的答案计算机使用二进制而不是十进制工作

© www.soinside.com 2019 - 2024. All rights reserved.