fix: shell print float

This commit is contained in:
factosea 2025-02-10 18:02:48 +08:00
parent edd5754f56
commit 54b1f37b1d
2 changed files with 6 additions and 14 deletions

View File

@ -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: { case TSDB_DATA_TYPE_FLOAT: {
float fv = 0; float fv = 0;
fv = GET_FLOAT_VAL(row[i]); 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; } break;
case TSDB_DATA_TYPE_DOUBLE: { case TSDB_DATA_TYPE_DOUBLE: {
double dv = 0; double dv = 0;
dv = GET_DOUBLE_VAL(row[i]); 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; } break;
case TSDB_DATA_TYPE_VARBINARY: { case TSDB_DATA_TYPE_VARBINARY: {

View File

@ -672,25 +672,17 @@ void shellPrintField(const char *val, TAOS_FIELD *field, int32_t width, int32_t
if (tsEnableScience) { if (tsEnableScience) {
printf("%*.7e", width, GET_FLOAT_VAL(val)); printf("%*.7e", width, GET_FLOAT_VAL(val));
} else { } else {
n = tsnprintf(buf, LENGTH, "%*.7f", width, GET_FLOAT_VAL(val)); n = snprintf(buf, LENGTH, "%.*g", FLT_DIG, GET_FLOAT_VAL(val));
if (n > SHELL_FLOAT_WIDTH) {
printf("%*.7e", width, GET_FLOAT_VAL(val));
} else {
printf("%s", buf); printf("%s", buf);
} }
}
break; break;
case TSDB_DATA_TYPE_DOUBLE: case TSDB_DATA_TYPE_DOUBLE:
if (tsEnableScience) { if (tsEnableScience) {
snprintf(buf, LENGTH, "%*.15e", width, GET_DOUBLE_VAL(val)); snprintf(buf, LENGTH, "%*.15e", width, GET_DOUBLE_VAL(val));
printf("%s", buf); printf("%s", buf);
} else { } else {
n = tsnprintf(buf, LENGTH, "%*.15f", width, GET_DOUBLE_VAL(val)); n = snprintf(buf, LENGTH, "%.*g", DBL_DIG, GET_DOUBLE_VAL(val));
if (n > SHELL_DOUBLE_WIDTH) { printf("%s", buf);
printf("%*.15e", width, GET_DOUBLE_VAL(val));
} else {
printf("%*s", width, buf);
}
} }
break; break;
case TSDB_DATA_TYPE_VARBINARY: { case TSDB_DATA_TYPE_VARBINARY: {