From 54b1f37b1dcb31ca7f6da15371d4458702838b88 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Mon, 10 Feb 2025 18:02:48 +0800 Subject: [PATCH] fix: shell print float --- source/client/src/clientMain.c | 4 ++-- tools/shell/src/shellEngine.c | 16 ++++------------ 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/source/client/src/clientMain.c b/source/client/src/clientMain.c index 190a724151..27e21d9a58 100644 --- a/source/client/src/clientMain.c +++ b/source/client/src/clientMain.c @@ -699,13 +699,13 @@ int taos_print_row_with_size(char *str, uint32_t size, TAOS_ROW row, TAOS_FIELD case TSDB_DATA_TYPE_FLOAT: { float fv = 0; fv = GET_FLOAT_VAL(row[i]); - len += tsnprintf(str + len, size - len, "%f", fv); + len += snprintf(str + len, size - len, "%.*g", FLT_DIG, fv); } break; case TSDB_DATA_TYPE_DOUBLE: { double dv = 0; dv = GET_DOUBLE_VAL(row[i]); - len += tsnprintf(str + len, size - len, "%lf", dv); + len += snprintf(str + len, size - len, "%.*g", DBL_DIG, dv); } break; case TSDB_DATA_TYPE_VARBINARY: { diff --git a/tools/shell/src/shellEngine.c b/tools/shell/src/shellEngine.c index f56a9797f3..5caf13e42e 100644 --- a/tools/shell/src/shellEngine.c +++ b/tools/shell/src/shellEngine.c @@ -672,12 +672,8 @@ void shellPrintField(const char *val, TAOS_FIELD *field, int32_t width, int32_t if (tsEnableScience) { printf("%*.7e", width, GET_FLOAT_VAL(val)); } else { - n = tsnprintf(buf, LENGTH, "%*.7f", width, GET_FLOAT_VAL(val)); - if (n > SHELL_FLOAT_WIDTH) { - printf("%*.7e", width, GET_FLOAT_VAL(val)); - } else { - printf("%s", buf); - } + n = snprintf(buf, LENGTH, "%.*g", FLT_DIG, GET_FLOAT_VAL(val)); + printf("%s", buf); } break; case TSDB_DATA_TYPE_DOUBLE: @@ -685,12 +681,8 @@ void shellPrintField(const char *val, TAOS_FIELD *field, int32_t width, int32_t snprintf(buf, LENGTH, "%*.15e", width, GET_DOUBLE_VAL(val)); printf("%s", buf); } else { - n = tsnprintf(buf, LENGTH, "%*.15f", width, GET_DOUBLE_VAL(val)); - if (n > SHELL_DOUBLE_WIDTH) { - printf("%*.15e", width, GET_DOUBLE_VAL(val)); - } else { - printf("%*s", width, buf); - } + n = snprintf(buf, LENGTH, "%.*g", DBL_DIG, GET_DOUBLE_VAL(val)); + printf("%s", buf); } break; case TSDB_DATA_TYPE_VARBINARY: {