From d2a68945e6c20cf5e68ef27387b31ac102fd493f Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 12 May 2010 07:25:48 +0000 Subject: * numeric.c (flo_to_s): exponent needs 2 digits. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ numeric.c | 7 +++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8e45d74da0..5d9806d088 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Wed May 12 16:25:46 2010 Nobuyoshi Nakada + + * numeric.c (flo_to_s): exponent needs 2 digits. + Wed May 12 16:02:43 2010 Nobuyoshi Nakada * numeric.c (flo_to_s): fill lower zeros. diff --git a/numeric.c b/numeric.c index 23c54800ee..d6dd1c4a5c 100644 --- a/numeric.c +++ b/numeric.c @@ -585,10 +585,9 @@ flo_to_s(VALUE flt) } else if (decpt - digs < float_dig) { long len; - char *ptr; rb_str_cat(s, buf, digs); - rb_str_resize(s, (len = RSTRING_LEN(s)) + decpt - digs); - memset(RSTRING_PTR(s) + len, '0', decpt - digs); + rb_str_resize(s, (len = RSTRING_LEN(s)) + decpt - digs + 2); + if (decpt > digs) memset(RSTRING_PTR(s) + len, '0', decpt - digs); rb_str_cat(s, ".0", 2); } else { @@ -615,7 +614,7 @@ flo_to_s(VALUE flt) } buf[1] = '.'; rb_str_cat(s, buf, digs + 1); - rb_str_catf(s, "e%+d", decpt - 1); + rb_str_catf(s, "e%+03d", decpt - 1); } return s; } -- cgit v1.2.3