zoukankan      html  css  js  c++  java
  • js 判断传入的参数是否是一个 安全整数

    因为有的接口参数是 int 类型,所以在页面获取的时候用 js 转了一下,然后发现位数比较多的情况下,后几位会 自动变成 0000 ....

    网上的解释:

    1.JS中只有一种类型数,即64位(1bit 的符号位,11bits 的指数部分 ,以及52bits 的小数部分)双精度浮点数,当整数数值过大时,就会发生精度丢失。

    2.所谓安全整数即能够唯一确定的数字,即能够使用64位二进制数唯一确定的整数。考虑253,转换成对应表示方式后其小数部分总共包括53位,发生了精度丢失,所以在JS中无法区别253与2^53+1;

    3.安全整数与JS是否能够正确进行运算关系密切,当运算数与运算结果都处于安全整数的范围内时,才能保证JS运算结果正确。

    so,需要的 js 转为数字的时候再多一层判断;

    if (Number.isSafeInteger(Math.abs(value))) {
        console.log("是安全数字");
        // 参数值显示数字
        if (!isNaN(value)) {
            value = value * 1
            }
        } else {
            console.log("不是安全数字");
        }

    Number.isSafeInteger():判断传入的参数值是否是一个“安全整数”;

    Math.abs():返回 int 值的绝对值。如果参数为非负数,则返回该参数;如果参数为负数,则返回该参数的相反数;

  • 相关阅读:
    SQL EXPLAIN优化详解
    2019数据智能算法大赛赛后复盘
    K-D树详解
    点云配准相关
    pandas速查手册(中文版)
    Windows CMD命令大全
    获取时间戳
    SQL 字符串转成临时表
    delphi cxgrid明细新增第三行的报错【Key violation】
    cxgrid列的Properties(cxPopupEditPopup)的关闭方法
  • 原文地址:https://www.cnblogs.com/changqing8023/p/12163672.html
Copyright © 2011-2022 走看看