assert(meta:get_float("h") > 1)
assert(meta:get_string("i") == "${f}")
+ meta:set_float("j", 1.23456789)
+ assert(meta:get_float("j") == 1.23456789)
+ meta:set_float("j", -1 / 0)
+ assert(meta:get_float("j") == -1 / 0)
+ meta:set_float("j", 0 / 0)
+ assert(core.is_nan(meta:get_float("j")))
+
meta:from_table()
assert(next(meta:to_table().fields) == nil)
assert(#meta:get_keys() == 0)
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;
}
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))