`
celebration
  • 浏览: 35162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

浮点数强转整形的问题

阅读更多

        前两天在看PHP的时候看到一本书中提到在由浮点型转换成整形的时候需要注意,因为由于计算机存储的问题会导致某些出人意料的结果。我突然想起来在原来看Java 的时候也有相同的问题,但是以前没有仔细想。既然这里也提到了,就应该好好总结下。以下是我用的例子:

在PHP/Java/C++/C#下我都尝试着运行了下面计算的结果:

(int)(0.1*10)             (int)((0.1+0.7)*10)                    (int)((0.1+0.9)*10)

结果得到的结果都是:1              7             10

对于这个答案我也只能解释第二个的答案,因为在计算机的内部,所有的信息都是以二进制存储的,所以在计算机中不能精确的表示0.1,而只能表示成0.099999....。所以0.1+0.7等于0.799999....,乘以10就是7.999999....,而去整就是截取小数点后的字段,所以得到的答案是7。但是如果以这个理由来解释第一和第三个就又解释不清楚了。

        这个问题问了好些人,也没有给出具体的答案。我估计要彻底理解这个问题,需要从计算机的运算原理入手。其实能否正确理解这个问题的原理并不重要,只要我们知道有这种事情,在编程的时候小心些就好了。尽量避免这种运算,就像永远不要比较浮点数是否相等的道理一样。

分享到:
评论

相关推荐

    关于浮点数的精度问题

    "关于浮点数的精度问题" 浮点数精度问题是一个经典的问题,对于了解和学习C语言有一定帮助。浮点数的精度问题是由于计算机对浮点数的存储方式和表示方法所致。 IEEE754 的浮点数存储格式对浮点数的表示方法进行了...

    浮点数与整形数据互转软件

    "浮点数与整形数据互转软件"就是为了满足这样的需求而设计的工具。 浮点数在计算机内部是以二进制浮点格式存储的,最常见的标准是IEEE 754。它分为单精度(32位)和双精度(64位)两种格式。单精度浮点数提供约7位...

    AB-Micro系列PLC双精度浮点数转换为整形.pdf

    根据给定的文件信息,本知识点讲解将围绕AB-Micro系列PLC中如何将双精度浮点数转换为整形数进行展开,以下是详细知识点: 1. PLC在工业中的应用 PLC(可编程逻辑控制器)是工业自动化控制的核心设备之一。在物联网...

    浮点数精度问题解答——浮点数

    浮点数精度问题在计算机科学中是一个至关重要的概念,尤其对于进行数值计算的开发者来说,理解和掌握浮点数的表示和精度误差至关重要。本文将详细阐述IEEE 754标准,这一标准对浮点数的表示和计算进行了规范,旨在...

    float_2_char.zip_C51 float转char_单片机 浮点数_浮点数 char_浮点数 转换_浮点数转换

    `float_2_char.zip` 提供的代码着重解决了单片机中浮点数(`float`)与字符型(`char`)之间的转换问题,这对于节省存储空间、提高通信效率以及降低错误率非常有用。下面将详细介绍浮点数与字符型之间的转换原理和...

    S7-200PLC双精度浮点数转换为整形.pdf

    3. 双精度浮点数转换为整形算法:文档介绍了一种在S7-200 PLC中实现双精度数据无损转换的方法。该算法能够将双精度浮点数转换为整形数,确保了数据的准确性和管理的便利性。 4. 双精度转换算法的具体实现:通过特定...

    解决javascript中的浮点数计算不精确问题

    在JavaScript编程中,浮点数计算不精确是一个常见的问题,源于其内部的二进制浮点数表示方式。本文将深入探讨这个问题,并提供解决方案。首先,我们要理解为什么会出现这种不精确性。 JavaScript遵循IEEE 754标准来...

    浮点数(单精度浮点数,双精度浮点数)

    浮点数(单精度浮点数,双精度浮点数) 浮点数是一种数字表示方法,用于近似表示任意实数。在计算机中,浮点数由一个整数或定点数(即尾数)乘以某个基数(通常是 2)的整数次幂得到。这种表示方法类似于基数为 10 ...

    二进制浮点数舍入问题解决.js

    二进制浮点数舍入问题解决

    64位浮点数与32位整数或32位浮点数之间的相互转换(V17版本仅限1500系列PLC使用).zip

    而从32位整数转为64位浮点数则没有这个问题,因为64位浮点数的精度更高。 32位浮点数转换为64位浮点数时,虽然不会丢失精度,但转换过程可能涉及数据扩展,确保所有信息得到保留。从64位浮点数转换为32位浮点数时,...

    C#浮点数和16进制字节数互相转换

    在C#编程语言中,处理浮点数与16进制...然而,对浮点数表示的原理有所了解,有助于在遇到问题时进行调试和优化。在实际项目中,根据具体需求选择合适的方法,同时注意数据的一致性和完整性,是保证程序正常运行的关键。

    C语言中浮点数精度问题分析.pdf

    在C语言编程中,浮点数精度问题是一个常见的问题,它涉及到计算机科学基础中的数值表示方法。由于计算机采用二进制系统存储数据,这使得计算机在处理十进制小数时会出现精度误差。理解这些误差产生的原因是极为重要...

    十六进制转浮点数,十六进制转浮点数在线,LabView

    本文将深入探讨十六进制到浮点数的转换,特别是在LabVIEW环境下的实现。LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司(NI)开发的一种图形化编程语言,广泛应用于工程、...

    4.15实验-浮点数的表示及运算

    此外,浮点数比较也不总是准确的,因为两个看似相等的浮点数在二进制下可能有所不同,因此比较时需注意精度问题。 四、浮点数运算的性能优化 在实际应用中,理解和优化浮点数运算的性能至关重要。处理器通常具有...

    双精度浮点数转换

    在计算机科学中,浮点数是一种用于...无论是单精度还是双精度浮点数,了解它们如何在不同表示形式之间转换,以及如何进行实际转换,都能增强我们对计算机内部运作的理解,从而更好地利用这些数据类型来解决实际问题。

    TMS320C3x浮点数简介、IEEE754的32位转VC33的32位浮点数算法、IEEE754的64位浮点数转VC33的40位浮点数算法

    在数字信号处理领域,浮点数运算在许多高级计算任务中扮演着重要角色。TMS320C3x是一款由德州仪器(TI)推出的数字信号处理器(DSP),它支持浮点运算,使得复杂的数学计算得以高效执行。本文将深入探讨TMS320C3x中...

    单片机浮点数设计 单片机浮点数设计

    总的来说,单片机浮点数设计是一个涉及硬件限制、软件优化和算法选择的综合问题。理解和掌握浮点数的原理及其实现策略,对于有效地在单片机中进行浮点运算至关重要。通过合理的设计和优化,我们可以让单片机在有限的...

    浮点数整数转换工具

    浮点数整数转换工具,用于浮点数与整数之间相互转换

    浮点数与十进制数转换工具

    这就是著名的浮点数舍入误差问题,它在计算领域是一个重要的概念,需要在设计算法和编写代码时予以考虑。 在编程语言中,如Python、Java、C++等,都有内置的函数或者库来支持浮点数和十进制数之间的转换,例如...

    用Verilog实现整数转浮点数

    此外,对于实时应用,还需要考虑数据路径的延迟和同步问题。 CHQsqrt_float这个文件名可能是用于实现平方根运算的Verilog模块,这对于浮点数转换也非常重要,因为浮点数的平方根通常不直接可用,需要通过特定的算法...

Global site tag (gtag.js) - Google Analytics