背景:
大家都知道,低精度的数字转换为高精度的数字是没有问题的,但是高精度的数字转换低精度的数字会精度受损。那精度是怎样受损的?转换的逻辑是怎样的了?以下为个人的猜想。
先上代码,1个short类型的数字,转换为byte类型的数字
@Test public void LongToInt(){ short c = 428; byte e = (byte)c; System.out.println("c to e :" +e); }
分析:
在计算机内存中,所有的数据都是以二进制方式进行计算的。数字运算也不能列外。就以二进制为思路。
short在java中 占用两个字节,二进制为16位的0和1。
比如:short c = 428 对应的二进制为 0000000110101100。
byte 在java中占用1个字节。
两个字节的short类型转换为1个字节的byte类型,是怎样转换的了?
个人猜想,把short的第一个字节去掉,还剩1个字节,把剩余的字节赋值给byte,那么0000000110101100去掉第一个字节的8位,剩下的字节为10101100,java中又是有符号数,一看最高为1,得用补码计算。最高位不变,其他位0变成1,1变成0,然后再加1,最后的二进制位11010100,最高位表示符号位,不进行计算,剩余的1010100转换为10进制为84,再加上符号位,最后的结果就是 -84了。
总结:
高精度的数字转换为低精度的数,把超过低精度字节的长度,从高精度高位字节去掉,转换为符合低精度的字节长度。
比如8字节的long,转换为4字节的int,把long的前4个字节去掉,剩余4个字节赋值给int,需要注意是否进行补码转换。
相关推荐
1. 使用BigDecimal类:BigDecimal类是java中提供的一种高精度计算类,通过设置保留的小数位数来控制计算结果的精度。 2. 设置保留的小数位数:通过setScale()方法设置保留的小数位数,以控制计算结果的精度。 3. ...
这种精度丢失的现象对于需要高精度计算的应用来说是一个常见的问题。本文将详细介绍Java中的 `double` 类型精度问题,并提供几种解决方法。 #### 一、Java Double 精度丢失的原因 1. **二进制表示限制**:`double`...
在IT行业中,坐标转换是一个重要的领域,特别是在GIS(地理信息系统)和导航系统中。Java作为一种广泛应用的编程语言,被广泛用于开发这样的功能。本篇将深入探讨“七参数转换”在Java中的实现,并通过名为...
在进行单精度和双精度浮点数与十六进制转换时,需要注意的是,由于浮点数的存储方式涉及舍入误差,转换过程中可能会导致微小的精度损失。此外,不是所有的十六进制数都能准确表示为浮点数,特别是对于超出浮点数范围...
Java作为一种广泛使用的编程语言,提供了丰富的库和工具,可以方便地实现这样的复杂计算。在这个项目中,开发者使用Java编写了代码,实现了大地坐标系和空间直角坐标系之间的相互转换,并且包括了求解七参数的过程。...
Java自定义实现本地语言与ASCII之间的互相转换。可在开发项目中直接调用的工具类。
16进制(Hexadecimal)是一种逢16进1的计数方式,主要用在计算机科学中,因为它能更简洁地表示二进制数。浮点型(Floating-Point)数据是用于表示带有小数部分的数字,通常用于科学计算和工程应用,因为它们可以表示...
在Java编程语言中,将字符转换为十六进制表示的ASCII码是一项常见的任务,尤其是在处理字符串数据时。本文将深入探讨如何实现这个功能,并通过一个具体的示例代码`StringToAscii.java`进行演示。 首先,我们需要...
为了保证转换的精确性,代码可能还涉及到高精度计算、异常处理和地理坐标系的定义等细节。 在实际应用中,这种坐标转换功能常用于地图开发、导航系统、遥感图像处理等领域。理解并熟练运用`CoordinateConversion....
浮点数在计算机科学中是表示实数的一种方式,尤其在数学计算和科学计算中至关重要。IEEE是电气和电子工程师协会(Institute of Electrical and Electronics Engineers)的缩写,他们制定了一套标准,即IEEE 754,来...
- 基本数据类型:Java中定义了八种基本数据类型,分为数值型、字符型和布尔型。 - byte:有符号的8位整型。 - short:有符号的16位整型。 - int:有符号的32位整型。 - long:有符号的64位整型。 - float:单...
Java 语言是一种静态类型语言,编程过程中的数据类型限制非常严格。因此,在编程过程中需要注意数据类型的转换。本文介绍了 Java 中的自动类型转换和强制类型转换的方法。 自动类型转换是指不需要书写代码,由系统...
在Java编程语言中,公式计算是一项常见的需求,特别是在科学计算、数据分析、数学建模等领域。为了简化这方面的代码编写,开发者经常会将各种计算操作封装成方法,以便在项目中直接调用。标题“java 公式计算汇总,...
在IT行业中,图像处理是不可或缺的一部分,特别是在跨平台和网络应用中。本主题涉及的是将Windows Metafile Format (WMF) 和 Enhanced Metafile Format (EMF) 图像转换为更通用且网络友好的 Scalable Vector ...
生辰八字是中国传统文化中用于预测命运的一种方式,它基于农历日期和时间,包括年、月、日、时四个部分,每个部分对应一个天干地支。在本示例中,我们将探讨如何使用Java实现这一功能,并确保精度达到秒级别。 首先...
总结,Java数值计算算法编程涵盖了基础数据类型与运算、数学库的使用、高精度计算、迭代与递归、数据结构应用、矩阵运算、并发处理以及面向对象设计等多个方面。理解并掌握这些知识点,能够帮助开发者在Java环境中...
Java是一种广泛使用的编程语言,它的灵活性和跨平台性使其在处理文本转换任务时也非常得心应手。在“java中文繁体转中文简体”这个主题中,我们主要讨论的是如何利用Java技术来实现中文繁体字到简体字的转换。 首先...
采用java.swt编写的计算器界面,corejava实现高精度计算的程序
JAVA计算器小程序(多进制计算、转换) 包含 2进制 8进制 10进制 16进制数的计算,转换