memdiff和/或totaldiff为负时会发生什么?我希望有一个负面的memperc,但似乎并没有发生这种情况。当我插入负数时,在Python中乱搞会产生各种令人困惑的结果。
local mem, percent, memdiff, totalMem, totaldiff = GetMemUsage("StarTip")
if mem then
if totaldiff == 0 then totaldiff = 0.001 end
memperc = (memdiff / totaldiff * 100)
local num = memperc
if num < 1 then num = 1 end
if num > 100 then num = 100 end
local r, g, b = gradient[num][1], gradient[num][2], gradient[num][3]
return GetColorCode(format("%s (%.2f%%)", memshort(mem), memperc), r, g, b)
end
编辑:哦,来吧,问题不是一个坏问题。也许我应该更清楚我要做的事情。
我正在使用两个内存值,一个整体,一个特定于此插件。通过thismem - lastmem
创造差异。这是我的不同之处。我有两个,总体和插件具体。当Lua垃圾收集时,当我memdiff / totaldiff * 100
时,我会超过100%,当它应该是负数时。我不知道为什么。
EDIT2:
让我举几个例子。
lastmem = 95
mem = 100.
lastaddonmem = 20
addonmem = 25.
totaldiff = mem - lastmem
addondiff = addonmem - lastaddonmem
perc = addondiff / totaldiff * 100
perc = 100
lastmem = 100
mem = 95.
lastaddonmem = 25
addonmem = 20.
totaldiff = mem - lastmem
addondiff = addonmem - lastaddonmem
perc = addondiff / totaldiff * 100
perc = 100
我知道我会以错误的方式解决这个问题。这就是我在这里的原因。
编辑3:你们为什么要关闭它?我承认在数学方面我很蠢。难道人们对数学上的挑战有那么多的不宽容吗?我根本就没有数学。数字让我感到困惑,就像我的其他挑战一样。我没有受过教育。我有学习障碍。我不明白什么是重要的。
我最终选择了:
local mem, percent, memdiff, totalMem, totaldiff = GetMemUsage("StarTip")
if mem then
if totaldiff == 0 then totaldiff = 0.0001 end
local memperc
if memdiff < 0 then
memdiff = abs(memdiff)
totaldiff = abs(totaldiff)
memperc = memdiff / totaldiff * 100
memperc = memperc * -1
else
memperc = memdiff / totaldiff * 100
end
local num = floor(memperc)
if num < 1 then num = 1 end
if num > 100 then num = 100 end
local r, g, b = gradient[num][1], gradient[num][2], gradient[num][3]
return GetColorCode(format("%s (%.2f%%)", memshort(mem), memperc), r, g, b)
end
答案 0 :(得分:1)
如果memdiff
和totaldiff
具有相同的符号,则为memdiff/totaldiff > 0
。乘以100不会改变符号
如果memdiff
和totaldiff
有不同的标志,那么memdiff/totaldiff < 0
。再次乘以100不会改变这一点。
如果memdiff == 0
则memdiff/totaldiff == 0
。乘以100不会改变这一点。
找出memdiff/totaldiff * 100 > 1
的原因,请注意这意味着memdiff*100 > totaldiff
暗示100&gt; totaldiff / memdiff。没有规则说百分比必须介于0和1之间。
答案 1 :(得分:1)
if totaldiff == 0 then totaldiff = 0.001 end
memperc = (memdiff / totaldiff * 100)
所以如果memdiff&gt; 0.001 memperc将大于100
EG 1:(0.001 / 0.001)* 100 = 100
EG 2:(0.002 / 0.001)* 100 = 200