aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJude Melton-Houghton <jwmhjwmh@gmail.com>2023-01-12 15:40:34 -0500
committerGitHub <noreply@github.com>2023-01-12 15:40:34 -0500
commit3992a13f24fec116cd4d0920dfd51abaf76a207e (patch)
treeca6cd05671c8dc4d2255673576688c4de022e68e /src
parent5f2925c59cb3b6fa580e565e2d5a4dad3c400eeb (diff)
downloadminetest-3992a13f24fec116cd4d0920dfd51abaf76a207e.tar.xz
Improve `MetaDataRef:{get,set}_float` precision (#13130)
Diffstat (limited to 'src')
-rw-r--r--src/script/lua_api/l_metadata.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/script/lua_api/l_metadata.cpp b/src/script/lua_api/l_metadata.cpp
index 68b79331b..52d7617d1 100644
--- a/src/script/lua_api/l_metadata.cpp
+++ b/src/script/lua_api/l_metadata.cpp
@@ -177,7 +177,9 @@ int MetaDataRef::l_get_float(lua_State *L)
std::string str_;
const std::string &str = meta->getString(name, &str_);
- lua_pushnumber(L, stof(str));
+ // Convert with Lua, as is done in set_float.
+ lua_pushlstring(L, str.data(), str.size());
+ lua_pushnumber(L, lua_tonumber(L, -1));
return 1;
}
@@ -188,8 +190,9 @@ int MetaDataRef::l_set_float(lua_State *L)
MetaDataRef *ref = checkAnyMetadata(L, 1);
std::string name = luaL_checkstring(L, 2);
- float a = readParam<float>(L, 3);
- std::string str = ftos(a);
+ luaL_checknumber(L, 3);
+ // Convert number to string with Lua as it gives good precision.
+ std::string str = readParam<std::string>(L, 3);
IMetadata *meta = ref->getmeta(true);
if (meta != NULL && meta->setString(name, str))