`
zengguo1988
  • 浏览: 280150 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

类型转换精度损失

阅读更多

 

 

import java.util.*;


class Hash

{

    public static void main(String[] args)

    {

        char A='a'+3;

        int i=3;

        char B='a'+i;   //错误:可能损失精度;为什么这个错了,上面的一个没错?

    }



分析:

char A='a'+3; a和3都是char类型的相加,没问题

 

 int i=3; 定义int 类型的变量i的值为3

char B='a'+i; 这种写法是错误的,int类型占用4个字节,char类型占用2个字节,JAVA是不容许int自动转换为char类型的

 

如果要强制转换是要这样写的char B=(char) ('a'+i);

 

但是这样会损失精度的 int的2进制是32位 char的2进制是16位 int强制转换为char的话,JAVA只截取int的32位的后16位,精度就这样损失了


分享到:
评论

相关推荐

    int 到 float 转换精度损失测试程序 C++ 源代码

    标题提及的"int到float转换精度损失测试程序C++源代码"就是一个用于检验这种精度损失的实例,它在Borland C++ 5.5编译器下成功编译并运行。 首先,我们要理解为什么会出现精度损失。在计算机内部,整数(如`int`)...

    第2章 C运算符和表达式-6赋值中的自动类型转换(下)1

    总的来说,C语言中的类型转换需要谨慎处理,尤其是在涉及浮点数和整数之间的转换,以防止数值溢出和精度损失。在编程时应充分考虑数据类型的选择和转换的潜在影响,以确保程序的正确性和可靠性。

    S7-200SMART_双精度浮点数转换为单精度浮点数库文件及使用说明.rar

    在转换过程中,务必理解可能存在的精度损失,这可能对某些高精度要求的应用造成影响。 通过以上步骤,您可以有效地在S7-200SMART系统中进行双精度浮点数到单精度浮点数的转换。记住,理解和掌握这种转换机制有助于...

    单精度&双精度浮点数与十六进制数相互转换

    在进行单精度和双精度浮点数与十六进制转换时,需要注意的是,由于浮点数的存储方式涉及舍入误差,转换过程中可能会导致微小的精度损失。此外,不是所有的十六进制数都能准确表示为浮点数,特别是对于超出浮点数范围...

    单精度浮点数转换工具.rar

    3. **精度与误差**:由于单精度浮点数的位数限制,对于非常大或非常小的数值,或者包含很多小数位的数值,可能会存在精度损失。这个工具可能帮助用户理解并分析这种精度问题。 4. **其他格式转换**:除了标准的IEEE...

    显式类型转换,类型强制转换为浮点型和整型

    - **精度损失**:当从浮点型转换为整型时,可能会丢失小数部分,这是不可逆的。 - **溢出风险**:如果浮点数的值超出了整型的最大表示范围,转换可能会导致溢出,这可能会导致未定义的行为。 - **精度提升**:从整型...

    浮点与16进制转换

    可以完成单精度、双精度浮点数据与16进制的转换,10进制与16进制的转换

    C语言类型转换-自动类型转换、强制类型转换、指针类型转换

    3. **避免隐式转换导致的错误**:当类型转换可能引起意料之外的行为时,如可能导致精度损失或溢出,可以使用强制转换明确指定预期行为。 ### 指针类型转换 (Pointer Type Conversion) 在C语言中,指针类型转换允许...

    数据类型转换

    在进行转换时,需要注意类型兼容性、精度损失和溢出等问题。特别是在使用如 STM32 这样的嵌入式系统时,由于资源有限,正确处理数据类型转换尤为重要。希望本文能帮助读者更好地理解和应用数据类型转换的相关知识。

    深入分析java中的类型转换

    强制手动类型转换是指程序员明确指定的类型转换过程,通常用于较大类型向较小类型转换时,因为这可能会导致数据的精度损失或异常。 ##### 基本数据类型的强制手动类型转换 - **大→小**: 大数据类型到小数据类型的...

    Java中各个数据类型之间的转换

    - 转换可能导致精度损失,尤其是从大类型到小类型。 - 转换可能引发溢出,当转换后的数值超出了目标类型的范围。 - 字符型(char)转换为整型时,会按ASCII码值处理。 - 不同级别的数据类型之间不能直接转换,如`...

    java 常用基础类型之强制转换

    - 强制转换可能造成数据溢出或精度损失。例如,将`double`值强制转换为`int`可能会丢弃小数部分,而将大`int`值转换为`byte`可能会导致溢出。 4. **装箱与拆箱转换** - Java的封装类型(如`Integer`, `Float`等)...

    C语言数据类型转换PPT学习教案.pptx

    - 当不同数据类型的变量参与运算时,编译器会自动将它们转换为同一类型,通常选择较大的数据类型以避免精度损失。 - 如果涉及`int`和`long`,`int`会被提升为`long`。 - 浮点运算中,即使是`float`类型的变量也会...

    C ++类型转换心得

    4. 避免丢失精度:当从浮点类型转换为整数类型时,可能会丢失小数部分,需要注意潜在的数据损失。 总之,理解C++中的类型转换机制和MFC中的 Variant 类型使用是提高代码质量的关键。在进行转换时,需谨慎检查,确保...

    C#中处理多位小数精度的精度问题

    这主要涉及到浮点数和定点数的数据类型,以及它们在数学运算中可能出现的精度损失。本文将深入探讨这个问题,并提供解决方案。 首先,让我们理解为何会出现精度问题。在C#中,浮点数如`float`和`double`是按照IEEE ...

    C++class_convert.rar_c++类型转换_类型转换

    7. **类型转换的陷阱与最佳实践**:避免不必要的类型转换,尤其是可能导致精度损失或数据溢出的转换。始终确保在转换前后检查数据范围。在可能的情况下,优先使用安全的转换方法,如`std::to_string`和`std::from_...

    隐式类型转换

    但是,它也存在一些隐患,例如,在某些情况下,隐式类型转换可能会导致数据的损失或精度的降低。 例如,在以下代码中: ```c int x = 100 + 'a' + 1.5 * u + f / 'b' - s * 3.1415926; ``` 其中,`u`是 unsigned 型...

    C语言实现数值类型转换源代码

    1. **精度问题**:在进行浮点数到整数的转换时,需要注意精度损失问题。例如,将一个包含小数的浮点数转换为整数时,其小数部分将被截断而非四舍五入。 2. **溢出问题**:在转换过程中,如果目标类型的范围不足以...

    C# .Net里面地类型转换

    这些操作可能因溢出或精度损失而产生错误的结果,因此需要谨慎处理。 ### 使用`as`关键字 在C#中,可以使用`as`关键字进行非引用类型到引用类型的转换,这是一种安全的转换方式,如果转换失败,不会抛出异常,而是...

    PHP浮点数精度问题汇总

    由于浮点数在计算机内部是以二进制形式存储的,而不是我们常用的十进制形式,因此在进行某些计算时会遇到精度损失的问题。这种现象并不只限于PHP,它在所有使用浮点数的编程语言中都有可能出现。但鉴于本文件内容是...

Global site tag (gtag.js) - Google Analytics