[前][次][番号順一覧][スレッド一覧]

ruby-changes:19107

From: naruse <ko1@a...>
Date: Tue, 22 Mar 2011 10:09:00 +0900 (JST)
Subject: [ruby-changes:19107] Ruby:r31146 (trunk): * numeric.c (flo_round): use pow instead of while-loop. fixes #4510

naruse	2011-03-22 10:08:49 +0900 (Tue, 22 Mar 2011)

  New Revision: 31146

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31146

  Log:
    * numeric.c (flo_round): use pow instead of while-loop. fixes #4510
      patched by Alex Young [ruby-core:35526]

  Modified files:
    trunk/ChangeLog
    trunk/numeric.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 31145)
+++ ChangeLog	(revision 31146)
@@ -1,3 +1,8 @@
+Tue Mar 22 09:38:19 2011  NARUSE, Yui  <naruse@r...>
+
+	* numeric.c (flo_round): use pow instead of while-loop. fixes #4510
+	  patched by Alex Young [ruby-core:35526]
+
 Tue Mar 22 06:47:46 2011  NARUSE, Yui  <naruse@r...>
 
 	* ext/date/date_strftime.c (date_strftime_wo_timespec):
Index: numeric.c
===================================================================
--- numeric.c	(revision 31145)
+++ numeric.c	(revision 31146)
@@ -1479,17 +1479,14 @@
 {
     VALUE nd;
     double number, f;
-    int ndigits = 0, i;
+    int ndigits = 0;
     long val;
 
     if (argc > 0 && rb_scan_args(argc, argv, "01", &nd) == 1) {
 	ndigits = NUM2INT(nd);
     }
     number  = RFLOAT_VALUE(num);
-    f = 1.0;
-    i = abs(ndigits);
-    while  (--i >= 0)
-	f = f*10.0;
+    f = pow(10, abs(ndigits));
 
     if (isinf(f)) {
 	if (ndigits < 0) number = 0;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]