1
0
forked from aniani/vim

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)
This commit is contained in:
Bram Moolenaar
2017-06-04 20:30:00 +02:00
parent 3e54569b17
commit 863e80b445
10 changed files with 99 additions and 173 deletions

View File

@@ -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;