$ f0レジスタに浮動小数点数123.4567 ...があるとします。MIPS(アセンブリ) - 浮動小数点数を丸める方法?
は、どのように私は123,46にそのラウンドし、$ F1レジスタにそれを格納することができますか? > -123.46
編集 - ...
-123.4567:
は、私はまた、負の数で動作するソリューションが必要です。そしてまた、整数で:
-4.0 - > -4.0
$ f0レジスタに浮動小数点数123.4567 ...があるとします。MIPS(アセンブリ) - 浮動小数点数を丸める方法?
は、どのように私は123,46にそのラウンドし、$ F1レジスタにそれを格納することができますか? > -123.46
編集 - ...
-123.4567:
は、私はまた、負の数で動作するソリューションが必要です。そしてまた、整数で:
-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
^あなたはたとえば-4.0ラウンドしようとすると、1が機能しないこと: -4.0 * 100 = -400.0 -400.0 + 0.5 = -399.5 INT(-399.5)= -399 フロート(-399)= -399.0 -399,0/100.0 =だから、-3.99 -4,0は-3.99 – Mike
@マイクに丸めます:おかげで、はい、私の答えは、正の値に対してのみ有効でした - 負の値でも機能するように更新しました。 –