美文网首页
窄化类型转换

窄化类型转换

作者: Shaw_Young | 来源:发表于2021-08-30 16:31 被阅读0次

窄化类型转换(Narrowing Numeric Conversion)

1.转换规则

Java虚拟机也直接支持以下窄化类型转换:

  • 从int类型至byte、short或者char类型。对应的指令有:i2b、i2s、i2c
  • 从long类型到int类型。对应的指令有:l2i
  • 从float类型到int或者long类型。对应的指令有:f2i、f2l
  • 从double类型到int、long或者float类型。对应的指令有:d2i、d2l、d2f

2.精度损失问题

窄化类型转换可能会导致转换结果具备不同的正负号、不同的数量级,因此,转换过程很可能会导致数值丢失精度。

尽管数据类型窄化转换可能发生上限溢出、下限溢出和精度丢失等情况,但是Java虚拟机规范中明确规定数值类型的窄化转换指令永远不可能导致虚拟机抛出运行时异常。

3.补充说明

3.1当将一个浮点值窄化转换为整数类型T(T限于int或者long类型之一)的时候,将遵循以下转换规则:

  • 如果浮点值是NaN,那转换结果就是int或者long类型的0。
  • 如果浮点值不是无穷大的时候,浮点值使用IEEE 754的向零舍入模式取整,获得整数值v,如果v在目标类型T(int或long)的表示范围之内,那转换结果就是v。否则,将根据v的符号,转换为T所能表示的最大或者最小正数

3.2 当将一个double类型窄化转换为float类型时,将遵循以下转换规则:
通过向最接近数舍入模式舍入一个可以使用float类型表示的数字。最后结果根据下面3条规则判断:

  • 如果转换结果的绝对值太小而无法使用float来表示,将返回float类型的正负零。
  • 如果转换结果的绝对值太大而无法使用float来表示,将返回float类型的正负无穷大。
  • 对于double类型的NaN值将按规定转换为float类型的NaN值。

梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。

相关文章

  • 窄化类型转换

    窄化类型转换(Narrowing Numeric Conversion) 1.转换规则 Java虚拟机也直接支持以...

  • spring类型转换器(三)

    spring类型转换器(三) 格式化Formatter Converter用来将源数据类型转换目标数据类型,不过有...

  • 宽化类型转换

    宽化类型转换(widening numeric conversions) 1.转换规则: Java虚拟机直接支持以...

  • typescript学习笔记-类型收窄

    // typeof 类型收窄// 使用类型陈述语法实现类型收窄

  • 【SpringBoot】 中时间类型 序列化、反序列化、格式处理

    【SpringBoot】 中时间类型 序列化、反序列化、格式处理 Date yml全局配置 请求参数类型转换 JD...

  • day04-markdown总结

    1. 字符串的格式化 a.%c的用法 b.%s的用法 2.数据类型的转换 1.数据类型的自动转换 2.强制类型转换...

  • C语言类型转换

    类型转换的方式 自动类型转换1.运算转换(规则:会把小类型转换为大类型) 2.赋值转换 强制类型转换格式:(类型)...

  • 离职率居高不下的原因?

    窄化效应|离职率居高不下的原因 第一, 什么是“窄化效应”? ①,“ 窄化效应 ”...

  • 引用类型转换

    向上类型转换(自动类型转换),是小类型到大类型的转换向下类型转换(强制类型装换),是大类型到小类型的转换在强制类型...

  • 窄化

    深度思考好累,新的一年不想过多反思。让状态稳定下来,可能会更好。起伏冲突的背后也未必没有空洞。真实还需要力量。如今...

网友评论

      本文标题:窄化类型转换

      本文链接:https://www.haomeiwen.com/subject/coemiltx.html