新垣结衣
火狐狸
火狐狸
  • UID55997
  • 注册日期2017-09-25
  • 最后登录2022-08-31
  • 发帖数103
  • 经验115枚
  • 威望0点
  • 贡献值64点
  • 好评度10点
  • 忠实会员
  • 社区居民
阅读:1992回复:10

关于 <input type="number" value="123456789123456789" />

楼主#
更多 发布于:2017-11-16 18:27
在火狐里看是 123456789123457000 ,有谁知道这个转换的逻辑?
新垣结衣
火狐狸
火狐狸
  • UID55997
  • 注册日期2017-09-25
  • 最后登录2022-08-31
  • 发帖数103
  • 经验115枚
  • 威望0点
  • 贡献值64点
  • 好评度10点
  • 忠实会员
  • 社区居民
1楼#
发布于:2017-11-16 19:55
aaaa007cn:temp0.value → "123456789123456789"(字符串)
temp0.valueAsNumber → 123456789123456780(数值)
发现了吗?
value 还是正确的
问题发生在从字符串转到数值的时候
...
回到原帖
可是其它浏览器显示的是 123456789123456789 。。包括 EDGE、IE等一众浏览器。
新垣结衣
火狐狸
火狐狸
  • UID55997
  • 注册日期2017-09-25
  • 最后登录2022-08-31
  • 发帖数103
  • 经验115枚
  • 威望0点
  • 贡献值64点
  • 好评度10点
  • 忠实会员
  • 社区居民
2楼#
发布于:2017-11-16 20:11
taoww:很简单。数值是按IEEE-754里规定的binary64这种64位浮点数存储的。能连续精确表示的整数只到2^53=90071992547409922。超过这个上限后,都会按一定规则进行舍入。
反正用这个规范存储数值的软件都会有这个问题,你到...
回到原帖
所以其它浏览器是作了特殊处理是吗?因为我用了其它浏览器发现是没有舍入。
新垣结衣
火狐狸
火狐狸
  • UID55997
  • 注册日期2017-09-25
  • 最后登录2022-08-31
  • 发帖数103
  • 经验115枚
  • 威望0点
  • 贡献值64点
  • 好评度10点
  • 忠实会员
  • 社区居民
3楼#
发布于:2017-11-16 21:17
非常感谢大家的回答!
新垣结衣
火狐狸
火狐狸
  • UID55997
  • 注册日期2017-09-25
  • 最后登录2022-08-31
  • 发帖数103
  • 经验115枚
  • 威望0点
  • 贡献值64点
  • 好评度10点
  • 忠实会员
  • 社区居民
4楼#
发布于:2017-11-16 21:17
taoww:https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number)

“If the element is mutable, the user age...
回到原帖
非常感谢您的回答,受益匪浅。
游客

返回顶部