添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Delphi中提供了三个函数:

Trunc: 将浮点数的整数部分返回。
Round: 将浮点数四舍五入后返回整数部分。
Int: 将浮点数的小数部分去掉,返回只保留了整数部分的Extended型。

在D2007 + Win7 + Intel平台下测试, 由于Int返回的并非整型,我们把它排除掉。测试结果是 Round 性能高出Trunc好几倍。

为什么Trunc慢了呢,查看了System中的ASM代码,Trunc有11行指令,Round则只有5行。

出于好奇,通过网络研究下Trunc的算法,知道了在 IEEE 754 里规定双精度浮点数是 64 位,而其中符号位占 1 位,指数部分是 11 位,那么尾数部分就是 52 位,那么 1 * 2^52 = $10000000000000。设要取整的浮点数为V, 那么通过符点数运算的对阶法, PInteger(V + $10000000000000 的结果)^ 就是计算结果了。

于是有了下面的函数:

function MyTrunc(const V: Double): Integer; inline;
  D: Double;
                    Delphi中提供了三个函数:Trunc: 将浮点数的整数部分返回。Round: 将浮点数四舍五入后返回整数部分。Int: 将浮点数的小数部分去掉,返回只保留了整数部分的Extended型。在D2007 + Win7 + Intel平台下测试, 由于Int返回的并非整型,我们把它排除掉。测试结果是 Round 性能高出Trunc好几倍。为什么Trunc慢了呢,查看了System...
				
在日常编程中,我们经常需要将浮点数换为整数或者将整数换为浮点数。在C/C++编程中,我们可以使用强制类型换操作符,例如’(int)float_number’,将浮点数直接换为整数。同样地,我们也可以使用显式类型换操作符,例如’(float)int_number’,将整数强制换为浮点数。实际上,这种换只是在整数后面加上一个虚拟的小数点,将其换为浮点数。以上就是将浮点数换为整数和将整数换为浮点数的方法介绍,希望本文能够对开发者有所帮助。将浮点数换为整数——浮点数整数之间的换方法详解。
浮点型:real 整数:integer DELPHI浮点数声明不是用float,而是用real(8个字节),single(8个字节,单精度浮点),double(16个字节,双精度浮点) 数组:array var a:array[1..5] of integer=(1,2,3,4,5) a:array[1..5] of string var ...
在LabVIEW中,我们可以使用函数“Unflatten From Byte Stream”将四个字节的数据换为一个浮点数。在这个函数中,我们需要输入包含四个字节数据的字节数组和一个布尔常量来指定数据的字节顺序(大端或小端)。 一旦我们把这个四字节的字节数组通过“Unflatten From Byte Stream”函数换成单精度浮点数,我们可以进行各种计算和处理。例如,我们可以使用这个浮点数与其他浮点数进行加、减、乘、除等运算,或者将它换成字符串、布尔值或其他数据类型。 需要注意的是,字节数组中的四个字节必须是按正确的顺序组合的。如果字节数组中的字节顺序与系统的字节顺序不同,我们需要在使用“Unflatten From Byte Stream”函数之前对字节数组进行字节顺序反操作。 总之,将四个字节数据换为单精度浮点数是一个简单而常见的操作,并且使用LabVIEW中的“Unflatten From Byte Stream”函数可以很容易地实现。