mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
util.c: round nearly middle value
* util.c (ruby_dtoa): [EXPERIMENTAL] adjust the case that the Float value is close to the exact but unrepresentable middle value of two values in the given precision, as r55604. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
38ea561319
commit
295f60b94d
3 changed files with 14 additions and 0 deletions
4
util.c
4
util.c
|
@ -3452,8 +3452,12 @@ ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve)
|
|||
ilim = i;
|
||||
*s++ = '0' + (int)L;
|
||||
if (i == ilim) {
|
||||
double x;
|
||||
if (dval(d) > 0.5 + dval(eps))
|
||||
goto bump_up;
|
||||
else if (!isinf(x = d_ * tens[ilim-1] + 0.5) &&
|
||||
dval(d) > modf(x, &x))
|
||||
goto bump_up;
|
||||
else if (dval(d) < 0.5 - dval(eps)) {
|
||||
while (*--s == '0') ;
|
||||
s++;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue