$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