2017-01-08 46 views
4

例如,給定任何數量的排序78.689或1.12,我正在尋找的是以編程方式將數字四捨五入到十進制後的最接近的第十位。如何取得最接近的第十名?

我試圖在一個環境中做到這一點,有一個math.floor()函數四捨五入到最低的整數,並且據我所知,從文檔中可以看出,沒有什麼像PHP的round()函數。

+2

'string.format(「%。1f」,percent * 100)' –

回答

7

有簡單的片段在:http://lua-users.org/wiki/SimpleRound

function round(num, numDecimalPlaces) 
    local mult = 10^(numDecimalPlaces or 0) 
    return math.floor(num * mult + 0.5)/mult 
end 

時numDecimalPlaces是負的它會表現不好,但有該網頁上更多的例子。

0

就我而言,我只是試圖對這個數字進行字符串表示......但是,我想這個解決方案對別人也是有用的。

string.sub(tostring(percent * 100), 1, 4) 

所以把它帶回來爲數值表示,你可以簡單地調用tonumber()上的號碼。

3

您可以使用強制來做到這一點...... 它的工作方式與printf類似......您可以嘗試在此代碼段中執行類似操作。

value = 8.9756354 
print(string.format("%2.1f", value)) 
-- output: 9.0 
1

考慮到這是roblox,將它作爲全局變量而不是製作單個模塊或創建自己的gloo會更容易。

_G.round = function(x, factor) 
    local factor = (factor) and (10^factor) or 0 
    return math.floor((x + 0.5) * factor)/factor 
end