2012-05-05 2 views

답변

4

의사 코드 :이 각각 양 또는 음의 경우 @ 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

^당신이 예를 -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

+0

@ 마이크 반올림됩니다 : 감사합니다, 그래, 내 대답은 양의 값에만 유효 - 이제는 음수 값에서도 작동하도록 업데이트했습니다. –

1

건물, 당신은 -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