Mercurial > vim
diff src/evalfunc.c @ 11461:5be73ebf6a15 v8.0.0614
patch 8.0.0614: float2nr() is not exactly right
commit https://github.com/vim/vim/commit/863e80b4451b5102b41bebf9ddca3a420de746fa
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jun 4 20:30:00 2017 +0200
patch 8.0.0614: float2nr() is not exactly right
Problem: float2nr() is not exactly right.
Solution: Make float2nr() more accurate. Turn test64 into a new style test.
(Hirohito Higashi, closes #1688)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 04 Jun 2017 20:45:04 +0200 |
parents | 162bcd0debd7 |
children | 3933a3bf9385 |
line wrap: on
line diff
--- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -3352,9 +3352,9 @@ f_float2nr(typval_T *argvars, typval_T * if (get_float_arg(argvars, &f) == OK) { - if (f < -VARNUM_MAX) + if (f <= -VARNUM_MAX + DBL_EPSILON) rettv->vval.v_number = -VARNUM_MAX; - else if (f > VARNUM_MAX) + else if (f >= VARNUM_MAX - DBL_EPSILON) rettv->vval.v_number = VARNUM_MAX; else rettv->vval.v_number = (varnumber_T)f;