|
@@ -64,8 +64,12 @@ std::optional<int64> module::globalfuncs::toint(const sol::object& obj)
|
|
|
sol::type t = obj.get_type();
|
|
sol::type t = obj.get_type();
|
|
|
switch (t) {
|
|
switch (t) {
|
|
|
case sol::type::number:
|
|
case sol::type::number:
|
|
|
- // 直接将数字转换为 int
|
|
|
|
|
- return obj.as<int64>();
|
|
|
|
|
|
|
+ double value = obj.as<double>();
|
|
|
|
|
+ // 检查小数部分是否为零
|
|
|
|
|
+ if (std::floor(value) == value) {
|
|
|
|
|
+ return static_cast<int64>(value);
|
|
|
|
|
+ }
|
|
|
|
|
+ return std::nullopt;
|
|
|
case sol::type::string: {
|
|
case sol::type::string: {
|
|
|
// 尝试将字符串转换为 int
|
|
// 尝试将字符串转换为 int
|
|
|
std::string s = obj.as<std::string>();
|
|
std::string s = obj.as<std::string>();
|