2012-10-17 172 views
2

在我爲一個在線遊戲開發的修改腳本中,我試圖顯示當前數字的百分比。返回Lua中的百分比字符串。格式

function() 
    local z = math.max(0, UnitPower("player"))/math.max(1, UnitPowerMax("player")) * 100; 
    return string.format("%.f", z); 
end 

上面的代碼正確顯示百分比。

但是,我很難讓實際的百分比符號顯示出來而不會在任何地方引發錯誤。

我已經嘗試在結束函數以及函數之後添加print("%%"),但它似乎不起作用。

+0

寫一個弱靈氣哇?那麼......技術上寫:) –

+0

是的,其實。哇,這已經很久以前了 - 真是個壞蛋! :P – Ben

回答

7

功能string.format,像printf在C,要求逐字記錄時,百分號加倍。這是而不是的情況下爲printio.write功能!

所以你一定要這樣:

function() 
    local z = math.max(0, UnitPower("player"))/math.max(1, UnitPowerMax("player")) * 100; 
    return string.format("%.f %%", z); 
end 
2

想通了。

function() 
    local z = math.max(0, UnitPower("player"))/math.max(1, UnitPowerMax("player")) * 100; 
    return string.format("%.f", z) .. "%%"; 
end 

剛加入.. "%%";顯示的值現在爲100%(其中100是當前百分比

超級後期編輯:
正在進入魔獸視頻遊戲世界的插件這是一些自定義代碼的一部分,這是因爲我想實現的,因爲作者在呼喚圍繞「自定義代碼」輸入string.format()目標的解決方案,參考對方的回答上這個問題的標準Lua解決方案。

+2

不,它會返回'100 %%'! – prapin

+1

是的,如果這個工作,那麼這個函數的調用者必須在返回的字符串上再次調用string.format()。 –