summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-06-04 20:30:00 +0200
committerBram Moolenaar <Bram@vim.org>2017-06-04 20:30:00 +0200
commit863e80b4451b5102b41bebf9ddca3a420de746fa (patch)
treeb7d40ecfa78b45b2fac1ba856028d8a40423f128 /src/evalfunc.c
parent3e54569b17683318e0cb6693ab0024c2ad1e3e8f (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.c4
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;