`
liuwenjie517333
  • 浏览: 25976 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java 中精度受损的一种转换计算方式

 
阅读更多

   背景:

           大家都知道,低精度的数字转换为高精度的数字是没有问题的,但是高精度的数字转换低精度的数字会精度受损。那精度是怎样受损的?转换的逻辑是怎样的了?以下为个人的猜想。
           先上代码,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,需要注意是否进行补码转换。


 

分享到:
评论

相关推荐

    java高精度计算算法与分析

    1. 使用BigDecimal类:BigDecimal类是java中提供的一种高精度计算类,通过设置保留的小数位数来控制计算结果的精度。 2. 设置保留的小数位数:通过setScale()方法设置保留的小数位数,以控制计算结果的精度。 3. ...

    Java Double 精度问题总结

    这种精度丢失的现象对于需要高精度计算的应用来说是一个常见的问题。本文将详细介绍Java中的 `double` 类型精度问题,并提供几种解决方法。 #### 一、Java Double 精度丢失的原因 1. **二进制表示限制**:`double`...

    Java实现的浮点类的精确计算

    为了克服这个问题,Java提供了`java.math.BigDecimal`类,它提供了一种方法来进行高精度的十进制计算,从而避免浮点运算中的精度问题。 描述中的"Java实现的浮点类的精确计算"很可能就是指一个自定义的工具类,该类...

    七参数坐标转换Java语言代码

    Java作为一种广泛使用的编程语言,提供了丰富的库和工具,可以方便地实现这样的复杂计算。在这个项目中,开发者使用Java编写了代码,实现了大地坐标系和空间直角坐标系之间的相互转换,并且包括了求解七参数的过程。...

    Java代码实现中文与ASCII互相转换

    Java自定义实现本地语言与ASCII之间的互相转换。可在开发项目中直接调用的工具类。

    java坐标转换使坐标更精确

    为了保证转换的精确性,代码可能还涉及到高精度计算、异常处理和地理坐标系的定义等细节。 在实际应用中,这种坐标转换功能常用于地图开发、导航系统、遥感图像处理等领域。理解并熟练运用`CoordinateConversion....

    精度浮点转换器源码 (By Greatboy)

    浮点数在计算机科学中是表示实数的一种方式,尤其在数学计算和科学计算中至关重要。IEEE是电气和电子工程师协会(Institute of Electrical and Electronics Engineers)的缩写,他们制定了一套标准,即IEEE 754,来...

    java基础,进制转换.pdf

    - 基本数据类型:Java中定义了八种基本数据类型,分为数值型、字符型和布尔型。 - byte:有符号的8位整型。 - short:有符号的16位整型。 - int:有符号的32位整型。 - long:有符号的64位整型。 - float:单...

    Java中类型转换.pdf

    Java 语言是一种静态类型语言,编程过程中的数据类型限制非常严格。因此,在编程过程中需要注意数据类型的转换。本文介绍了 Java 中的自动类型转换和强制类型转换的方法。 自动类型转换是指不需要书写代码,由系统...

    smali2java——直接将smali转换成java

    Smali是一种低级的、汇编式的语言,通常用于Android应用的逆向工程,而Java则是高级的面向对象编程语言。这个工具的出现旨在帮助开发者或者逆向工程师更容易地理解和操作Android应用的底层代码。 描述中提到"在网上...

    java 公式计算汇总,直接调用其方法即可进行运算

    在Java编程语言中,公式计算是一项常见的需求,特别是在科学计算、数据分析、数学建模等领域。为了简化这方面的代码编写,开发者经常会将各种计算操作封装成方法,以便在项目中直接调用。标题“java 公式计算汇总,...

    JAVA WMF 转换SVG,PNG

    在IT行业中,图像处理是不可或缺的一部分,特别是在跨平台和网络应用中。本主题涉及的是将Windows Metafile Format (WMF) 和 Enhanced Metafile Format (EMF) 图像转换为更通用且网络友好的 Scalable Vector ...

    Java中自动类型转换共3页.pdf.zip

    1. **类型转换概述**:Java中的类型转换分为两种,一种是自动类型转换(也称为隐式类型转换),另一种是强制类型转换(也称为显式类型转换)。自动类型转换是由编译器自动完成的,而强制类型转换需要程序员通过特定...

    java将数字转换为时间格式

    在Java编程语言中,经常需要处理日期与时间相关的数据,例如将数字(通常是表示时间戳或特定格式的字符串)转换为更易读的时间格式。这种转换不仅可以帮助我们更好地理解和操作数据,还能增强应用程序的用户友好性。...

    Java数值计算算法编程

    总结,Java数值计算算法编程涵盖了基础数据类型与运算、数学库的使用、高精度计算、迭代与递归、数据结构应用、矩阵运算、并发处理以及面向对象设计等多个方面。理解并掌握这些知识点,能够帮助开发者在Java环境中...

    字符串转换为计算公式的若干种方法

    从给定的文件标题“字符串转换为计算公式的若干种方法”及描述“个人收集的几种将字符串表达式转换为计算公式的方法”中,我们可以看出文章主要探讨的是如何将文本形式的数学表达式(字符串)转化为可以进行计算的...

    JAVA计算器小程序(多进制计算、转换)

    JAVA计算器小程序(多进制计算、转换) 包含 2进制 8进制 10进制 16进制数的计算,转换

    计算汉字笔画数java实现

    根据提供的文件信息,本文将详细解析如何通过Java编程语言实现计算汉字笔画数的方法,并对代码中的关键逻辑进行深入分析。 ### 概述 在Java中实现计算汉字笔画数的功能,主要涉及到对汉字编码的理解以及如何根据...

    经纬度计算距离、方位角等java源码

    总的来说,"Caculate.java"提供了一种实用的方法,用于处理基于经纬度的地理计算,这对于需要在地图应用中进行定位和导航的开发者来说是极其有价值的。通过深入理解这个源码,我们可以更好地理解和实现自己的地理...

Global site tag (gtag.js) - Google Analytics