首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

结合使用isNumberKey和truncateDecimals会导致输入字段出现异常舍入

的问题是由于两个函数的不兼容性引起的。

首先,isNumberKey是一个用于限制用户在输入字段中只能输入数字的函数。它可以通过JavaScript代码来实现,例如:

代码语言:txt
复制
function isNumberKey(evt){
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)){
        return false;
    }
    return true;
}

这个函数会检测用户按键的字符编码,如果不是数字则阻止输入。这样可以确保输入字段只能包含数字。

而truncateDecimals是一个用于截断小数点后指定位数的函数。它可以通过JavaScript代码来实现,例如:

代码语言:txt
复制
function truncateDecimals(num, digits){
    var numStr = num.toString();
    var decimalIndex = numStr.indexOf('.');
    if (decimalIndex !== -1 && decimalIndex + digits + 1 <= numStr.length){
        numStr = numStr.substr(0, decimalIndex + digits + 1);
        num = parseFloat(numStr);
    }
    return num;
}

这个函数会将输入的数字转换为字符串,并找到小数点的位置。然后根据指定的位数截断小数部分,并将字符串转换回数字。

当同时使用isNumberKey和truncateDecimals时,可能会出现异常舍入的情况。原因是isNumberKey会阻止用户输入非数字字符,但在某些情况下,用户可能需要输入带有小数点的数字。而truncateDecimals会截断小数点后的数字,导致用户输入的小数部分被舍弃。

为了解决这个问题,可以考虑修改isNumberKey函数的实现,允许用户输入小数点,并在使用truncateDecimals之前先判断输入字段的值是否为有效的数字。这样可以确保用户输入的小数部分不会被误舍。

下面是一个修改后的isNumberKey函数的示例:

代码语言:txt
复制
function isNumberKey(evt){
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode === 46){
        return true; // 允许输入小数点
    }
    if (charCode > 31 && (charCode < 48 || charCode > 57)){
        return false;
    }
    return true;
}

这样修改后,用户就可以在输入字段中输入小数点了。然后,在使用truncateDecimals之前,可以先检查输入字段的值是否为有效的数字,如果是数字再进行截断操作。

这样就可以避免结合使用isNumberKey和truncateDecimals时导致输入字段出现异常舍入的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入理解计算机系统(2.7)------浮点数舍入以及运算

对于向零舍入来说,则一定有|x| >= |x'|。   那么我们什么时候会使用向偶数舍入呢?   ...而倘若不是这种情况的话,则一般会有选择性的使用向上向下舍入,但总是向最接近的值舍入。其实这正是IEEE采取的默认的舍入方式,因为这种舍入方式总是企图向最近的值的舍入。  ...这是因为前面3.14f+10000000000f  时,会将 3.14 这个有效数值舍入掉,而导致最终结果为0.0   f2 由于括号的存在,先进行括号里面的运算,结果是0,然后在与3.14相加。   ...但是这中间的 x 可能回产生与原始值不同的值,因为它使用了加法运算不同的结合方式。所以现在的编译器都倾向于保守的方式,避免任何对功能产生的优化,即使是很轻微的影响。   ...这肯定比我们前面讲的要有趣多了,前面都是0或者1这样的数字打交道,后面至少是一种编程语言,相信更加有趣。

3.2K60

你有没有掉进去过这些 BigDecimal DateFormatter 的“陷阱“

代码中所使用的数最终都会转换成二进制,而浮点类型的数转换成二进制并不是精确地二进制,只能是最接近的二进制,这是应为浮点数是由指数尾数两部分组成,所以在浮点数计算的过程中会出现丢失精度的问题。...设置为5,自动补上0,再次执行测试输出结果如下: BigDecimal支持的舍入方式有很多中,向上取整,向下取整,四舍五入等 @Test public void testChangeScale(){...d2 = new BigDecimal(3); System.out.println(d1.divide(d2, 2, BigDecimal.ROUND_HALF_UP)); } 指定精度舍入方式...总结,使用BigDecimal一定要指定保留小数点的位数指定的舍入方式 精度问题导致结果比较不一致 @Test public void testCompare(){ BigDecimal d1...在使用 SimpleDateFormat 时可以解析大于或者等于定义的时间精度,但不能解析小于它定义的时间精度,并且 SimpleDateFormat 是线程不安全的,在多线程环境下操作抛出异常。

31630
  • 深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)

    参考链接: C/C++Java中的浮点运算结合律 前言    上一章我们简单介绍了IEEE浮点标准,本次我们主要讲解一下浮点运算舍入的问题,以及简单的介绍浮点数的运算。    ...浮点数舍入    在我们平时日常使用的十进制当中,我们一般对一个无理数或者有位数限制的有理数进行舍入时,大部分时候采取四舍五入的方式,这算是一种比较符合我们期望的舍入方式。    ...而其它三种方式在这方面都是有一定缺陷的,向上向下舍入很明显,造成值的偏大或偏小。而对于向零舍入来讲,如果全是正数的时候则会造成结果偏小,全是负数的时候则会造成结果偏大。    ...而倘若不是这种情况的话,则一般会有选择性的使用向上向下舍入,但总是向最接近的值舍入。其实这正是IEEE采取的默认的舍入方式,因为这种舍入方式总是企图向最近的值的舍入。    ...然而这种优化是编译器无法进行的,因为可能引入误差,比如就像前面的小例子中的结果01一样。

    1.4K20

    深入理解计算机系统 第二章 笔记

    第二章 信息的表示处理 无符号编码 基于传统的二进制表示法,表示大于或者等于零的数字 补码编码 表示有符号整数最常见的方式 浮点数编码 表示实数的科学计数法的以2为基数的版本 信息存储 大多数计算机使用...) 编码阶码E n位的小数字段 (frac) 编码尾数M,但编码出来的值也依赖于阶码字段的值是否等于0 单精度浮点数 float 中,s、expfrac字段分别为 1 位、k = 8 位 n =...23 位,得到32位的表示 双精度浮点数 double 中,s、expfrac字段分别为 1 位、k = 11 位 n = 52 位,得到64位的表示 规格化的值 当阶码的位模式既不全为 0...向偶数舍入,也成向最接近的值舍入,是默认方式 向偶数舍入的原因: 计算一组数据的平均值,向上或向下舍入会使平均数比真实值略高或略低 向偶数舍入在大多数情况下避免了这种统计误差,向上向下舍入各有50%...浮点加法不具有结合性,这是缺少的最重要的群属性 因此编译器倾向于保守,避免任何对功能产生影响的优化

    3.2K30

    技术干货| MongoDB时间序列集合

    时间字段上支持的索引类型: 单字段索引 组合索引 哈希索引 通配符索引 稀疏索引 多键索引 带排序的索引 元数据字段元数据子字段支持的索引类型: 支持所有时间字段上支持的索引类型 v5.2及以上版本支持...写程序插入它的输入批处理里的每一个文档到BucketCatalog,然后BucketCatalog返回一个BucketCatalog::WriteBatch的处理器。...如果它拥有超过最大阈值(timeseriesBucketMaxCount)的测量值数据的数量;如果它拥有过大的数据量大小(timeseriesBucketMaxSize);又或者一个新的测量值数据是否是导致...在闰秒日历中的其他不规则情况下,这种舍入可能并不完美,并且通常通过对自纪元以来的秒数进行基本模运算来完成,假设每分钟 60 秒,每小时 60 分钟,以及每天 24 小时。...特别是,对于查询更新文档,我们会使用真正的字段meta 替换集合的metaField。

    1.8K10

    ​AdaRound:训练后量化的自适应舍入

    下面的简单示例说明了舍入到最近的取舍可能不是最佳的方法: 示例:假设 并且 。那么由于扰动导致的任务损失增加大约成正比: 对于对角线项,仅扰动的大小重要。...并且,还看到意外地将所有值向上或向下取整产生灾难性的影响。这意味着在进行训练后量化时,通过仔细舍入权重,可以获得很多收益。本文的其余部分旨在设计一种有充分根据计算效率的舍入机制。 ?...每个子问题都处理一行 (a)是进一步假设 是与输入数据无关的常数的结果。值得注意的是,优化(9)不需要了解后续层任务损失。...图3显示了经过整流的 Sigmoid 的这种组合如何导致许多权重学习舍入而不是舍入到最接近的舍入,以提高性能,同时最终收敛到接近0或1的水平。...为了避免更深层网络的量化误差累积以及考虑激活函数,我们使用以下不对称重建公式: 其中 是所有先前的层都已量化的该层的输入,而 是激活函数。尽管出于不同的目的,以前在中也使用了类似的损失表述方式。

    2.1K11

    springboot第42集:李佳琦说工作这么久了,还不懂Kafka吗?

    这使它非常适合于金融计算科学计算,这些领域对精确度要求很高。 不会引起舍入误差: 与基本的浮点数类型(如 float double)不同,BigDecimal 不会引起舍入误差。...在实际使用中,Swagger 根据这些注解自动生成 API 文档,开发人员 API 使用者可以根据文档了解如何正确地使用 API。...通常情况下,JSON 数据的键名与 Java 类的字段名是一致的,但有时候 JSON 数据的键名可能与 Java 类的字段名不匹配,或者希望在序列化反序列化过程中使用不同的名称。...这样,在序列化(将 Java 对象转换为 JSON 数据)反序列化(将 JSON 数据转换为 Java 对象)时,Gson 库根据这些注解来正确地映射字段与键。...使用 @SerializedName 注解可以解决 JSON 数据与 Java 类字段之间的不匹配问题,使数据的序列化反序列化更加灵活精确。

    27220

    丸辣!BigDecimal又踩坑了

    ,或者需要进行高精度的金融计算时为了解决这个问题,Java 提供了 BigDecimal 类BigDecimal 使用各种字段来满足高精度计算,为了后续的描述,这里只需要记住两个字段precision字段...:存储数据十进制的位数,包括小数部分scale字段:存储小数的位数BigDecimal的使用方式再后续踩坑中进行描述,最终总结出BigDecimal的最佳实践BigDecimal的坑创建实例的坑错误示例...:在BigDecimal有参构造使用浮点型,导致精度丢失BigDecimal d1 = new BigDecimal(6.66);正确的使用方法应该是在有参构造中使用字符串,如果一定要有浮点数则可以使用...return multiply(this.intVal, multiplicand.intVal, productScale); } }}而除法没有像前面所说的运算方法有规律性,因此使用除法时必须要指定保留小数位数以及舍入方式进行除法时可以立马指定保留的小数位数舍入方式...,乘法运算则是将两个数据的精度相加得到结果的精度,而除法没有规律,必须指定小数位数舍入模式,其他运算方式也建议主动设置小数位数舍入模式进行兜底当遇到商品平摊价格除不尽的情况时,可以将余数加到最后一件商品的价格进行兜底最后

    39731

    批量大小 Lot size(上)

    其他字段如:最小批量大小、最大批量大小、固定批量大小等是与之相关的字段,后面用到时具体介绍。...2、FX:固定订单数量,这个就要配合前面说的”固定批量大小“字段一起使用。如果供应不能满足需求,则产生一个固定批量大小的数量的计划订单/采购申请。...3、HB:补充到最大库存水平,这个需要配合“最大库存水平”字段一起使用。如果供应不能满足需求,则产生一个最大库存水平的数量的计划订单/采购申请。...(上面这三个常见的批量大小我就不举个栗子了) 4、FS:固定分解,这个需要配合“固定批量大小”、“间隔时间”、“舍入值”三个字段一起使用,下面还是举例说明: 物料主数据设置: ?...可以看到,FS是结合了FX舍入值的设置,也就是说: MRP每次按固定批量大小作为总数产生一个建议总数,这个建议总数按照舍入值拆分成每一个计划订单/采购申请。

    4.1K10

    浮点数

    提供了一种表示 0 的方法 对于规格化数,由于 ,故无法使用规格化数表示 0 。 :符号位为 0,阶码为全 0,尾数为全 0 。...【注】IEEE 的浮点格式中, 在某些方面被认为是不同的,而在其他方面是相同的。 2. 表示那些接近 0 的数 非规格化数能够均匀地表示那些接近 0 的数。...浮点数数值舍入 IEEE 浮点格式定义了四种不同格式的舍入方式,默认的方法是向偶数舍入。 3.1 向上舍入 。 3.2 向下舍入 。...不满足可结合性:由于存在精度损失,导致浮点数加法无法满足可结合性,比如: (3.14+1010)−1010=0.03.14+(1010−1010)=3.14\begin{array}{c} (3.14...因此这里当把 的指数调整到 的指数大小时,由于尾数精度只有 位,因此尾数精度不够导致 最后丢失。

    5.7K20

    IEEE754标准浮点数表示与舍入

    首先规格化值M始终>1,所以没法表示0,所以+0.0的浮点表示的位模式为全0:符号位0,阶码字段全为0(表明是一个非规格化值),尾数都是0就得到M=0.0。如果符号位为1,我们就得到了-0.0。...直接舍去后面的位的话意味着计算机中所有小数都小于等于它的实际值,进1的话意味着计算机中所有小数都大于等于它的实际值,四舍五入看起来不错,但是由于中间的5进位,所以仍然会使计算系统中的小数整体偏大。...1.5舍入有两个选择:12,但由于2是偶数所以就舍入到2,同样2.5舍入有两个选择:23,但由于3是奇数,所以还是舍入到2。...| = 0.000 100,两种选择的差值是相同的,这时使用向偶数舍入的方式,1.010是偶数(0偶1奇),所以舍入到1.010 根据上面的例子我们总结出以下规律: 我们用RR…RDD…D来表示一个二进制小数.../a.out 进入gdb后,输入start再输入layout asm查看反汇编结果: 可以看到a的值被存入了寄存器eax,在gdb中通过i r eax查看eax寄存器中的值: 可以看到eax寄存器中保存的值是

    34910

    Xilinx FIR IP的介绍与仿真

    1024 10)支持大于时钟频率的采样频率 11)在线系数重装能力 12)用户可选的输出舍入 13)高效的多列结构,适用于所有过滤器的实现优化 ?...过滤器系数使用逗号分隔列表以十进制形式指定,与过滤器系数数据文件中的coefdata字段相同。与.coe文件一样,可以使用FIR编译器根据您的要求适当量化的非整数实数来指定滤波器系数。...该值直接影响核心实现使用资源的并行度。选择“频率规格”后,可以指定“输入采样频率”“时钟频率”。这些值之间的比率以及其他核心参数决定了硬件过采样率。...可以使用分数采样周期来指定大于时钟频率的采样频率. (3)输入采样频率(Input Sampling Frequency ):该字段可以是整数或实数值;它指定一个通道的采样频率。...(2)输入数据小数位(Input Data Fractional Bits ):用于表示过滤器输入数据样本的小数部分的输入数据宽度位数。该字段仅供参考。

    2.1K30

    java setscale_BigDecimal.setScale(int newScale, int roundingMode)方法实例「建议收藏」

    在这里,指定的舍入模式应用到除法。...由于BigDecimal对象是不可变的,这个方法的调用不会导致被修改原始对象,违背了其名为setX变异字段X方法,而不是通常的惯例,setScale返回一个对象具有适当精度;返回的对象可能或可能不会被新分配...publicBigDecimalsetScale(intnewScale,introundingMode) 参数 newScale – 返回BigDecimal值的精度 roundingMode – 舍入模式应用...异常 ArithmeticException – 如果的RoundingMode== ROUND_UNNECESSARY指定的缩放操作需要四舍五入。...after changing the scale to 2 and rounding is “+bg2;// print bg2 valueSystem.out.println(str);}} 让我们编译运行上面的程序

    43120

    数据产品生命线之数据质量

    数据及时性主要受大数据集群服务的稳定性、存储计算资源的影响,集群资源紧张,任务抢资源时,可能导致原来9点前完成的任务,到下午还没完成。...由于业务端并不会把所有用户的交互输入操作进行规则验证,对于一些异常操作,导致数据出现异常的情况。曾经遇到过外卖BD为了完成业绩获取奖金,自己跟商家合作下大金额订单,一笔外卖十几万元。...数据团队不生产数据,只是数据的搬运工,数据从业务系统同步数据仓库,可能会由于系统、工具异常,导致数仓数据业务端数据不一致的情况。...7.安全性 2021年9月1日数据安全法正式实行,对于用户身份证、手机号等敏感数据是严谨明文传输展示的,数据加工处理要在加密状态进行,数据产品端展示明文敏感信息带来法律风险。...)、业务端数据输入不规范等; 技术端:数据开发流程不规范、数据质量监控不健全,例如数据开发任务中各种任务的流程、参数、配置等出错,数据验证不充分 基础设施:存储计算集群资源不足,导致数据处理任务失败、延迟

    30010

    《深入理解计算机系统》阅读笔记--信息的表示处理(下)

    无论是无符号运算还是补码运算,乘以2的幂都可以能导致溢出。...对于不需要舍入的情况结果是x/2的k次方 当时当需要进行舍入的时候,位移导致结果向下舍入入右移4位会把-771.25向下舍入为-772 ?...在第三列,给出了-12340加上偏量值之后的结果,低k位以斜体表示,可以看出,低k位左边的位可能会加1,也可能不会加1,对于不需要舍入的情况k=1,加上偏量只会影响那些被移掉的位,对于需要舍入的情况,加上偏量导致较高的位加...在这个过程中,既可能溢出,也可能需要舍入来满足 frac 的精度。...不同的编码方式用来表示整数,实数字符串 大多数机器对整数使用补码编码,对于浮点数使用IEEE标准编码 由于编码的长度有限,计算机运算具有不同的属性,当超过表示范围时,有限长度能够引出数值溢出。

    1.3K30
    领券