MIPS(汇编) - 如何舍入浮点数?

时间:2012-05-05 20:46:18

标签: assembly floating-point mips rounding

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

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

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

-123.4567 ... - > -123.46

修改。还有整数:

-4.0 - > -4.0

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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