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/