假设我在$ f0寄存器中有一个浮点数123.4567 ....
如何将其舍入到123,46并将其存储到$ f1寄存器?
我需要一个也适用于负数的解决方案:
-123.4567 ... - > -123.46
修改。还有整数:
-4.0 - > -4.0
答案 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