From aa10f9344eca86d289e2c635fb310d9c8c08fbc7 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Mon, 24 Jul 2023 14:18:05 +0200 Subject: [PATCH] Add variable "csnumprec" to allow setting the precision of vectors and variables as arguments to functions listet in manual chapter 17.5. Default is 6, as has been standard up to now. --- src/frontend/variable.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/frontend/variable.c b/src/frontend/variable.c index 9410d4db2..ef28cffed 100644 --- a/src/frontend/variable.c +++ b/src/frontend/variable.c @@ -39,6 +39,7 @@ wordlist *cp_varwl(struct variable *var) wordlist *wl = NULL, *w, *wx = NULL; char *buf; struct variable *vt; + int csnump = 0; switch (var->va_type) { case CP_BOOL: @@ -49,8 +50,10 @@ wordlist *cp_varwl(struct variable *var) buf = tprintf("%d", var->va_num); break; case CP_REAL: - /* This is a case where printnum isn't too good... */ - buf = tprintf("%G", var->va_real); + if (cp_getvar("csnumprec", CP_NUM, &csnump, 0) && csnump > 0) + buf = tprintf("%.*g",csnump, var->va_real); /* csnumprec is set */ + else + buf = tprintf("%G", var->va_real); /* standard behavior */ break; case CP_STRING: buf = copy(var->va_string);