2014-04-08 89 views
1

我讀了下面的文章,但沒有被確切的提問或回答我的問題:Hexadecimal Floating-Point,roundIng最小值最大值和四捨五入的十六進制在JavaScript

給出一個浮點數,我該如何圓其關閉,以最接近的整十六進制數,然後在javascript和o之間的蛤蜊之間?例如,在轉換爲十六進制:

1e.fffffffffffe -> 1f 
1e.111111111111 -> 1e 
ff.fffffffffffe -> ff 
-0.111111111111 -> 00 

編輯 我想出了一些半烤功能,有人關心改進?

function roundDblDigitHex(x) { 
    x = Math.round(x); 
    if (x < 0) x = 0; 
    if (x > 255) x = 255; 
    x = x.toString(16); 
    if (x.length === 1) x = '0'+x; 
    return x; 
} 

回答

1

我喜歡你的解決方案(最後,我也只是使用Math.round())。這裏是我的建議(稍短一些,但代碼相同):

function roundDblDigitHex(x) { 
    x = Math.min(Math.max(Math.round(x), 0), 255); 

    return ("0" + x.toString(16)).slice(-2); 
}