[gnumeric] FIXED: fix.
- From: Morten Welinder <mortenw src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnumeric] FIXED: fix.
- Date: Mon, 15 Jun 2009 20:01:57 -0400 (EDT)
commit f6639dfdc075fff1d132a9fe4e2a1585715c3943
Author: Morten Welinder <terra gnome org>
Date: Mon Jun 15 20:01:27 2009 -0400
FIXED: fix.
NEWS | 1 +
plugins/fn-string/ChangeLog | 4 ++++
plugins/fn-string/functions.c | 23 ++++++++++-------------
3 files changed, 15 insertions(+), 13 deletions(-)
---
diff --git a/NEWS b/NEWS
index e5edae5..9deaefc 100644
--- a/NEWS
+++ b/NEWS
@@ -42,6 +42,7 @@ Morten:
* Fix problem loading very old .gnumeric files.
* Implement new-from-template. [#303657]
* Add Gudermannian function GD.
+ * Fixed FIXED. No, really.
--------------------------------------------------------------------------
Gnumeric 1.9.8
diff --git a/plugins/fn-string/ChangeLog b/plugins/fn-string/ChangeLog
index 9c5e87a..433a295 100644
--- a/plugins/fn-string/ChangeLog
+++ b/plugins/fn-string/ChangeLog
@@ -1,3 +1,7 @@
+2009-06-15 Morten Welinder <terra gnome org>
+
+ * functions.c (gnumeric_fixed): Fix sense of last argument.
+
2009-05-23 Morten Welinder <terra gnome org>
* Release 1.9.8
diff --git a/plugins/fn-string/functions.c b/plugins/fn-string/functions.c
index 257d95b..a7be2fe 100644
--- a/plugins/fn-string/functions.c
+++ b/plugins/fn-string/functions.c
@@ -639,16 +639,16 @@ gnumeric_fixed (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
{
gnm_float num = value_get_as_float (argv[0]);
gnm_float decimals = argv[1] ? value_get_as_float (argv[1]) : 2.0;
- gboolean commas = argv[2] ? value_get_as_checked_bool (argv[2]) : TRUE;
+ gboolean no_commas = argv[2] ? value_get_as_checked_bool (argv[2]) : FALSE;
GString *format;
GOFormat *fmt;
GnmValue *v;
char *res;
+ GOFormatDetails details;
decimals = gnm_fake_trunc (decimals);
if (decimals >= 128)
return value_new_error_VALUE (ei->pos);
-
if (decimals < 0) {
/* no decimal point : just round and pad 0's */
gnm_float mult = gnm_pow10 (decimals);
@@ -656,23 +656,20 @@ gnumeric_fixed (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
num = 0; /* Underflow */
else
num = gnm_fake_round (num * mult) / mult;
+ decimals = 0;
}
v = value_new_float (num);
- format = g_string_sized_new (200);
- if (commas)
- g_string_append (format, "#,##0");
- else
- g_string_append_c (format, '0');
- if (decimals > 0) {
- g_string_append_c (format, '.');
- go_string_append_c_n (format, '0', decimals);
- }
-
+ go_format_details_init (&details, GO_FORMAT_NUMBER);
+ details.num_decimals = decimals;
+ details.thousands_sep = !no_commas;
+ format = g_string_new (NULL);
+ go_format_generate_str (format, &details);
fmt = go_format_new_from_XL (format->str);
g_string_free (format, TRUE);
- res = format_value (fmt, v, NULL, -1, workbook_date_conv (ei->pos->sheet->workbook));
+ res = format_value (fmt, v, NULL, -1,
+ workbook_date_conv (ei->pos->sheet->workbook));
go_format_unref (fmt);
value_release (v);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]