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