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 に答える