gnumeric r17007 - in trunk: . src
- From: mortenw svn gnome org
- To: svn-commits-list gnome org
- Subject: gnumeric r17007 - in trunk: . src
- Date: Sat, 13 Dec 2008 18:03:08 +0000 (UTC)
Author: mortenw
Date: Sat Dec 13 18:03:07 2008
New Revision: 17007
URL: http://svn.gnome.org/viewvc/gnumeric?rev=17007&view=rev
Log:
2008-12-13 Morten Welinder <terra gnome org>
* src/parse-util.c (gnm_conventions_new_full): Default value
GNM_DIG for new field output.decimal_digits.
* src/value.c (value_get_as_gstring): Use number of digits from
output.decimal_digits.
* src/xml-sax-write.c (gnm_xml_io_conventions): Increase the
number of decimal digits used for output to avoid rounding errors
and overflow. Fixes #552464.
Modified:
trunk/ChangeLog
trunk/NEWS
trunk/src/parse-util.c
trunk/src/parse-util.h
trunk/src/value.c
trunk/src/xml-sax-write.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Sat Dec 13 18:03:07 2008
@@ -52,6 +52,7 @@
* Plug leaks in ssindex, ssgrep, and ssconvert.
* Fix export of Gnumeric-specific patterns to xls. [#564078]
* Improve guess of csv parsing parameters. [#498912]
+ * Fix problem with saving huge values. [#552464]
--------------------------------------------------------------------------
Gnumeric 1.9.3
Modified: trunk/src/parse-util.c
==============================================================================
--- trunk/src/parse-util.c (original)
+++ trunk/src/parse-util.c Sat Dec 13 18:03:07 2008
@@ -1360,6 +1360,7 @@
convs->input.name = std_name_parser;
convs->input.func = std_func_map;
+ convs->output.decimal_digits = GNM_DIG;
convs->output.translated = TRUE;
convs->output.string = std_output_string;
convs->output.name = std_expr_name_handler;
Modified: trunk/src/parse-util.h
==============================================================================
--- trunk/src/parse-util.h (original)
+++ trunk/src/parse-util.h Sat Dec 13 18:03:07 2008
@@ -158,6 +158,8 @@
/* Export specific functions ----------------------------------- */
struct {
+ int decimal_digits;
+
gboolean translated;
void (*string) (GnmConventionsOut *out,
Modified: trunk/src/value.c
==============================================================================
--- trunk/src/value.c (original)
+++ trunk/src/value.c Sat Dec 13 18:03:07 2008
@@ -875,7 +875,8 @@
return;
case VALUE_FLOAT:
- g_string_append_printf (target, "%.*" GNM_FORMAT_g, GNM_DIG,
+ g_string_append_printf (target, "%.*" GNM_FORMAT_g,
+ conv->output.decimal_digits,
v->v_float.val);
return;
Modified: trunk/src/xml-sax-write.c
==============================================================================
--- trunk/src/xml-sax-write.c (original)
+++ trunk/src/xml-sax-write.c Sat Dec 13 18:03:07 2008
@@ -1234,6 +1234,7 @@
gnm_xml_io_conventions (void)
{
GnmConventions *res = gnm_conventions_new ();
+ gnm_float l10;
res->decimal_sep_dot = TRUE;
res->input.range_ref = rangeref_parse;
@@ -1244,6 +1245,10 @@
res->array_row_sep = ';';
res->output.translated = FALSE;
+ l10 = gnm_log10 (FLT_RADIX);
+ res->output.decimal_digits = (int)gnm_ceil (GNM_MANT_DIG * l10) +
+ (l10 == (int)l10 ? 0 : 1);
+
return res;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]