1

假设我在 $f0 寄存器中有一个浮点数 123.4567...。

如何将其舍入到 123,46 并将其存储到 $f1 寄存器?

我需要一个也适用于负数的解决方案:

-123.4567... --> -123.46

编辑。还有整数:

-4.0 --> -4.0

4

2 回答 2

4

伪代码:

Multiply by 100.0
If sign is positive
  Add 0.5
Else
  Subtract 0.5
Convert to integer
Convert back to float
Divide by 100.0
于 2012-05-05T20:53:41.610 回答
1

根据@PaulR 的建议,您可以分别添加+0.5,或者-0.5如果它是积极的或消极的。

这可以通过一个分支来完成(为了清楚起见):

Multiply by 100.0
if num >= 0
    Add 0.5
else
    Add -0.5
Convert to integer
Convert back to float
Divide by 100.0

或者,如果性能很重要,通过屏蔽符号位来获得 0.5,这取决于输入的符号是正数还是负数:

Multiply by 100.0
$f2 = $f0 & (0x80000000 | 0.5))
$f0 += $f2
Convert to integer
Convert back to float
Divide by 100.0
于 2012-05-05T21:56:01.247 回答