From f85d0020490725df3c864150936b2a0f15b79224 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Wed, 16 Feb 2011 18:20:03 +0100 Subject: [PATCH] Correzione nella formattazione dei decimali. --- .gitignore | 1 + src/utils.c | 14 +++++++------- tests/utils_format_money.c | 10 +++++++++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 407fff9..64023a7 100644 --- a/.gitignore +++ b/.gitignore @@ -51,4 +51,5 @@ tests/allegato tests/mail tests/utils tests/utils_format_money +tests/utils_round *.csv diff --git a/src/utils.c b/src/utils.c index 2741aea..e61623b 100644 --- a/src/utils.c +++ b/src/utils.c @@ -269,8 +269,8 @@ solipa_gtktreemodel_to_csv (GtkTreeModel *model, const gchar *filename, static void solipa_fixed_toggled (GtkCellRendererToggle *cell, - gchar *path_str, - gpointer data) + gchar *path_str, + gpointer data) { GtkTreeModel *model = (GtkTreeModel *)data; GtkTreeIter iter; @@ -503,7 +503,7 @@ gchar gssize str_len; /* TODO - * - get number of decimal from locale + * - get number of decimals from locale * - get grouping char from locale * - get currency symbol from locale */ @@ -511,7 +511,7 @@ gchar ret = g_strdup (""); error = NULL; - regex = g_regex_new ("(-?\\d+)(\\d\\d\\d)", 0, 0, &error); + regex = g_regex_new ("(^[-\\d]?\\d+)(\\d\\d\\d)", 0, 0, &error); if (error != NULL) { g_warning ("Error on creating regex: %s.", @@ -519,7 +519,7 @@ gchar return ""; } - str_format = g_strdup_printf ("%%0%sf", decimals == 0 ? "" : (decimals < 0 ? ".2" : g_strdup_printf (".%d", decimals))); + str_format = g_strdup_printf ("%%0%sf", decimals == 0 ? ".0" : (decimals < 0 ? ".2" : g_strdup_printf (".%d", decimals))); ret = g_strdup_printf (str_format, number); while (TRUE) @@ -550,7 +550,7 @@ gchar if (with_currency_symbol) { - ret = g_strconcat ("€ ", ret, NULL); + ret = g_strconcat ("€ ", ret, NULL); } g_regex_unref (regex); @@ -571,7 +571,7 @@ solipa_unformat_money (const gchar *value) ret = 0.0; error = NULL; - regex = g_regex_new ("[€ .]", 0, 0, &error); + regex = g_regex_new ("[€ .]", 0, 0, &error); if (error != NULL) { g_warning ("Error on creating regex: %s.", diff --git a/tests/utils_format_money.c b/tests/utils_format_money.c index be8a7ae..0fea328 100644 --- a/tests/utils_format_money.c +++ b/tests/utils_format_money.c @@ -23,10 +23,18 @@ int main (int argc, char *argv[]) { gchar *str; + guint n_dec = -1; gtk_init (&argc, &argv); - str = solipa_format_money (g_strtod (argv[1], NULL), 3, FALSE); + if (argc == 3) + { + n_dec = strtol (argv[2], NULL, 10); + } + + g_message ("VALUE %s DOUBLE %s", argv[1], g_strdup_printf (g_strdup_printf ("%%.%df", n_dec), g_strtod (argv[1], NULL))); + g_message ("DECIMALS %d", n_dec); + str = solipa_format_money (g_strtod (argv[1], NULL), n_dec, FALSE); g_message ("FORMAT %s", str); g_message ("UNFORMAT %f", solipa_unformat_money (str)); -- 2.49.0