gpt4 book ai didi

lua - 处理redis中的 float

转载 作者:IT王子 更新时间:2023-10-29 06:10:15 31 4
gpt4 key购买 nike

我需要在我正在使用的项目中使用 Redis,并且想知道是否可以使用 LUA 脚本(或无论如何)对 float 进行适当的数学运算和比较。例如,我有一个字段,需要将它乘以另一个字段,然后与第三个字段进行比较。例如

local staticVal = .2
local dynamicVal2 = redis.pcall('GET', 'dynamicVal2')
local calcVal = dynamicVal * staticVal
local compareVal = 100
if calcVal < compareVal then
return false
else
return true

有没有可能的方法来做到这一点,还是我必须从另一种语言进行 GET 调用并在那里进行比较?

谢谢

编辑:

或者仅比较 float 的能力会有所帮助。好像是做字典比较,而不是数值比较。

编辑 2:

SET val1 10.5
SET val2 3.5
EVAL "local val1 = redis.pcall('GET','val1'); local val2 = redis.pcall('GET','val2'); if val1 > val2 then return val1 else return val2 end" 0

最佳答案

It seems that a dictionary comparison is done rather than a numerical comparison.

local val1 = redis.pcall('GET','val1'); 
local val2 = redis.pcall('GET','val2');
if val1 > val2 then ...

检查 val1val2 的类型(例如 print(type(val1)))。我的猜测是它们是字符串,这就是为什么您要进行词法比较而不是数字比较。

Lua 原生的数字类型是 float ,比较没有问题。如果您的值确实是字符串,您只需要在比较它们之前将它们转换为数字(例如 tonumber(val1))。

关于lua - 处理redis中的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601406/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com