Correzione nella formattazione dei decimali.
authorAndrea Zagli <azagli@libero.it>
Wed, 16 Feb 2011 17:20:03 +0000 (18:20 +0100)
committerAndrea Zagli <a.zagli@comune.scandicci.fi.it>
Thu, 17 Feb 2011 09:18:34 +0000 (10:18 +0100)
.gitignore
src/utils.c
tests/utils_format_money.c

index 407fff97087c517b46b3f43076131da73c6ec6da..64023a7234b3f1b03a538235b6906f1591de9191 100644 (file)
@@ -51,4 +51,5 @@ tests/allegato
 tests/mail
 tests/utils
 tests/utils_format_money
+tests/utils_round
 *.csv
index 2741aea32d7aa73621d3b26fbda2f4025fad4622..e61623b2516d7e8d373707a1b71814fcbcf1559d 100644 (file)
@@ -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 ("\80 ", 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 ("[\80 .]", 0, 0, &error);
+       regex = g_regex_new ("[ .]", 0, 0, &error);
        if (error != NULL)
                {
                        g_warning ("Error on creating regex: %s.",
index be8a7ae702042503e88249bd5297fbea1d39d1c5..0fea328983df1f4640570b6292449277b777c94a 100644 (file)
@@ -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));