如何仅获取float的整数部分?因此,我有一个浮点数组:x [4] = {5.0,13.0,25.0,41.0};我将其放入xmm0中,然后对其进行sqrt处理。我还需要一个命令,这将仅有助于获取此sqrt的int部分。例如,sqrt为5将为2.236068,而我只需要2.0就可以了
代码:

__asm
        {
            movups xmm0, x
            sqrtps xmm0, xmm0
            //here need some command
            movups x, xmm0
        }

最佳答案

使用 roundps 是最简单的。舍入模式表在其他位置,但是您需要舍入模式3(接近零)。

仅当保证输入在某个范围内(由于平方根大约为0到4.6e18)时,才能转换为整数并返回。您可以使用cvttps2dqcvtdq2ps做到这一点。那将只需要SSE2,roundps需要SSE4.1。仅当舍入模式设置为truncate时才可以使用cvtps2dq,通常它不是这样,因此您必须对其进行更改+恢复。

关于c++ - 如何截断XMM寄存器中的浮点值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34085091/

10-12 02:04