BWa*_*yne 2 lua world-of-warcraft
我试图将我的总经验值显示为四舍五入到小数点后两位的百分比。我想出了一个解决方案,但是它很笨拙。一定有更好的方法。
这是我所拥有的:
local xpPercentage = (((UnitXP("player") / UnitXPMax("player"))*100))
-- 63.4587392473
local xpMantissa = xpPercentage - floor(xpPercentage)
-- .4587392473
local xpTwoDec = (floor(xpMantissa * 100)/100) + floor(xpPercentage)
-- 63.45
Run Code Online (Sandbox Code Playgroud)
再说一次,这就是我想要的,但是有没有更漂亮的方法呢?
local formatted = string.format(
"%.2f %%",
UnitXP('player') / UnitXPMax('player') * 100
)
Run Code Online (Sandbox Code Playgroud)
这是Lua的标准方法,对您同样适用。除非WoW删除了该功能,否则这将是愚蠢的。
请注意,它type(formatted)是字符串,而不是数字。
string.format如手册中所述,将格式字符串作为其第一个参数,然后是要拼接为格式字符串的一系列值。
除了以开头的特殊标记外,格式字符串通常会按原样处理%。附加参数的数量应等于格式字符串中这些标记的数量。
在上面的示例中,%f意思是“在此处插入浮点数”;例如,string.format("hello %f world", 5.1")将返回“ hello 5.1 world”。在%和之后添加内容,f您可以告诉它如何精确格式化。
这是使用所有选项的示例: string.format("%x6.2f", 2.264)
从左到右:
% 标志着开始x告诉它向右滑动x s6 告诉整个事情应该是5个字符长.2 告诉它四舍五入(或填充0)到小数点后两位因此,结果将是 xx2.26
最后,由于%在格式字符串中具有特殊含义,因此,如果要使用文字%,则必须改为编写%%。
因此,“%。2f %%”表示:
浮点数,四舍五入或填充为两位小数,后跟一个空格和一个百分号。的第二个参数format必须是数字,否则函数将出错。
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |