diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-06-04 20:30:00 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-06-04 20:30:00 +0200 |
commit | 863e80b4451b5102b41bebf9ddca3a420de746fa (patch) | |
tree | b7d40ecfa78b45b2fac1ba856028d8a40423f128 /src/evalfunc.c | |
parent | 3e54569b17683318e0cb6693ab0024c2ad1e3e8f (diff) |
patch 8.0.0614: float2nr() is not exactly rightv8.0.0614
Problem: float2nr() is not exactly right.
Solution: Make float2nr() more accurate. Turn test64 into a new style test.
(Hirohito Higashi, closes #1688)
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r-- | src/evalfunc.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c index b16b260829..60cd344243 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -3352,9 +3352,9 @@ f_float2nr(typval_T *argvars, typval_T *rettv) 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; |