From bfc8c76a4c167b629cc1a82f3136cb32219bc7a8 Mon Sep 17 00:00:00 2001 From: Lizongdi <1210855344@qq.com> Date: Fri, 30 Oct 2026 14:23:35 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=94=AF=E7=BA=BF=E5=BE=85=E5=90=88?= =?UTF-8?q?=E3=80=91=E8=A7=A3=E5=86=B3MCU=E4=B8=8B=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=B5=AE=E7=82=B9=E6=95=B0=E6=9C=89=E9=97=AE=E9=A2=98=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/lua.c | 2 +- lua/lua_base.h | 2 ++ lua/pb_lua.c | 8 ++++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lua/lua.c b/lua/lua.c index a418265..2222d40 100644 --- a/lua/lua.c +++ b/lua/lua.c @@ -92,7 +92,7 @@ static char *trim(char *str) return str; } -static void print_number_fixed3(double num) +void print_number_fixed3(double num) { if (NULL == lua_print) return; diff --git a/lua/lua_base.h b/lua/lua_base.h index 9a85c49..7ab7aa0 100644 --- a/lua/lua_base.h +++ b/lua/lua_base.h @@ -99,6 +99,8 @@ extern lua_output lua_print; * routines' or functions' implementations * *----------------------------------------------*/ int lua_init(lua_output _lua_print); +/* 拆分整数/小数部分打印浮点数(保留小数点后三位),不依赖 printf 的 %f/%g(适用于无浮点打印支持的平台) */ +void print_number_fixed3(double num); int lua_repl(char *_pcBuffer, int _iSize, int _iEcho); void luaprint_stdout(const char *fmt, ...); void lua_register_help(lua_State *L, const char *name, lua_CFunction func, const char *description); diff --git a/lua/pb_lua.c b/lua/pb_lua.c index 1fc7369..271d507 100644 --- a/lua/pb_lua.c +++ b/lua/pb_lua.c @@ -357,7 +357,7 @@ static void pb_lua_dump_msg_fields(const void *msg, const pb_lua_msg_t *m, int d case PB_LUA_T_DOUBLE: { double v; memcpy(&v, p, sizeof(v)); - lua_print("%g", v); + print_number_fixed3(v); break; } case PB_LUA_T_STRING: { @@ -424,7 +424,7 @@ static void pb_lua_dump_table_fields(lua_State *L, int tidx, const pb_lua_msg_t else if (lua_isinteger(L, -1)) lua_print("%d", lua_tointeger(L, -1)); else if (lua_isnumber(L, -1)) - lua_print("%g", (double)lua_tonumber(L, -1)); + print_number_fixed3((double)lua_tonumber(L, -1)); else if (lua_isboolean(L, -1)) lua_print("%s", lua_toboolean(L, -1) ? "true" : "false"); else @@ -458,10 +458,10 @@ static void pb_lua_dump_value(lua_State *L, int vidx, const pb_lua_field_t *f, i if (lua_isinteger(L, vidx)) lua_print("%d", lua_tointeger(L, vidx)); else - lua_print("%g", (double)lua_tonumber(L, vidx)); + print_number_fixed3((double)lua_tonumber(L, vidx)); break; case PB_LUA_T_DOUBLE: - lua_print("%g", (double)lua_tonumber(L, vidx)); + print_number_fixed3((double)lua_tonumber(L, vidx)); break; case PB_LUA_T_STRING: lua_print("\"%s\"", lua_tostring(L, vidx));