$ 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
의사 코드 :이 각각 양 또는 음의 경우 @ PaulR의 제안 오프
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
건물, 당신은 -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 라운드하려고하면 그 하나가 작동하지 않습니다 -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
@ 마이크 반올림됩니다 : 감사합니다, 그래, 내 대답은 양의 값에만 유효 - 이제는 음수 값에서도 작동하도록 업데이트했습니다. –