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;