patch 9.0.0491: no good reason to build without the float feature

Problem:    No good reason to build without the float feature.
Solution:   Remove configure check for float and "#ifdef FEAT_FLOAT".
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index 68c3dd3..1946282 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -283,11 +283,11 @@
   if has('reltime')
     let message ..= repeat(' ', 50 - len(message))
     let time = reltime(func_start)
-    if has('float') && reltimefloat(time) > 0.1
+    if reltimefloat(time) > 0.1
       let message = s:t_bold .. message
     endif
     let message ..= ' in ' .. reltimestr(time) .. ' seconds'
-    if has('float') && reltimefloat(time) > 0.1
+    if reltimefloat(time) > 0.1
       let message ..= s:t_normal
     endif
   endif
diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim
index 5d4abaa..b666c01 100644
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -352,21 +352,19 @@
 
   call assert_fails('call assert_inrange(1, 1)', 'E119:')
 
-  if has('float')
-    call assert_equal(0, assert_inrange(7.0, 7, 7))
-    call assert_equal(0, assert_inrange(7, 7.0, 7))
-    call assert_equal(0, assert_inrange(7, 7, 7.0))
-    call assert_equal(0, assert_inrange(5, 7, 5.0))
-    call assert_equal(0, assert_inrange(5, 7, 6.0))
-    call assert_equal(0, assert_inrange(5, 7, 7.0))
+  call assert_equal(0, assert_inrange(7.0, 7, 7))
+  call assert_equal(0, assert_inrange(7, 7.0, 7))
+  call assert_equal(0, assert_inrange(7, 7, 7.0))
+  call assert_equal(0, assert_inrange(5, 7, 5.0))
+  call assert_equal(0, assert_inrange(5, 7, 6.0))
+  call assert_equal(0, assert_inrange(5, 7, 7.0))
 
-    call assert_equal(1, assert_inrange(5, 7, 4.0))
-    call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0])
-    call remove(v:errors, 0)
-    call assert_equal(1, assert_inrange(5, 7, 8.0))
-    call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0])
-    call remove(v:errors, 0)
-  endif
+  call assert_equal(1, assert_inrange(5, 7, 4.0))
+  call assert_match("Expected range 5.0 - 7.0, but got 4.0", v:errors[0])
+  call remove(v:errors, 0)
+  call assert_equal(1, assert_inrange(5, 7, 8.0))
+  call assert_match("Expected range 5.0 - 7.0, but got 8.0", v:errors[0])
+  call remove(v:errors, 0)
 endfunc
 
 func Test_assert_with_msg()
diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim
index b0239fd..ce8c3d0 100644
--- a/src/testdir/test_blob.vim
+++ b/src/testdir/test_blob.vim
@@ -669,9 +669,7 @@
 endfunc
 
 func Test_blob_sort()
-  if has('float')
-    call v9.CheckLegacyAndVim9Failure(['call sort([1.0, 0z11], "f")'], 'E975:')
-  endif
+  call v9.CheckLegacyAndVim9Failure(['call sort([1.0, 0z11], "f")'], 'E975:')
   call v9.CheckLegacyAndVim9Failure(['call sort([11, 0z11], "N")'], 'E974:')
 endfunc
 
diff --git a/src/testdir/test_cscope.vim b/src/testdir/test_cscope.vim
index d70103c..d29949c 100644
--- a/src/testdir/test_cscope.vim
+++ b/src/testdir/test_cscope.vim
@@ -122,25 +122,23 @@
     call assert_fails('cs find', 'E560:')
     call assert_fails('cs find x', 'E560:')
 
-    if has('float')
-      " Test: Find places where this symbol is assigned a value
-      " this needs a cscope >= 15.8
-      " unfortunately, Travis has cscope version 15.7
-      let cscope_version = systemlist('cscope --version')[0]
-      let cs_version = str2float(matchstr(cscope_version, '\d\+\(\.\d\+\)\?'))
-      if cs_version >= 15.8
-        for cmd in ['cs find a item', 'cs find 9 item']
-          let a = execute(cmd)
-          call assert_equal(['', '(1 of 4): <<test_mf_hash>> item = LALLOC_CLEAR_ONE(mf_hashitem_T);'], split(a, '\n', 1))
-          call assert_equal('	item = LALLOC_CLEAR_ONE(mf_hashitem_T);', getline('.'))
-          cnext
-          call assert_equal('	item = mf_hash_find(&ht, key);', getline('.'))
-          cnext
-          call assert_equal('	    item = mf_hash_find(&ht, key);', getline('.'))
-          cnext
-          call assert_equal('	item = mf_hash_find(&ht, key);', getline('.'))
-        endfor
-      endif
+    " Test: Find places where this symbol is assigned a value
+    " this needs a cscope >= 15.8
+    " unfortunately, Travis has cscope version 15.7
+    let cscope_version = systemlist('cscope --version')[0]
+    let cs_version = str2float(matchstr(cscope_version, '\d\+\(\.\d\+\)\?'))
+    if cs_version >= 15.8
+      for cmd in ['cs find a item', 'cs find 9 item']
+        let a = execute(cmd)
+        call assert_equal(['', '(1 of 4): <<test_mf_hash>> item = LALLOC_CLEAR_ONE(mf_hashitem_T);'], split(a, '\n', 1))
+        call assert_equal('	item = LALLOC_CLEAR_ONE(mf_hashitem_T);', getline('.'))
+        cnext
+        call assert_equal('	item = mf_hash_find(&ht, key);', getline('.'))
+        cnext
+        call assert_equal('	    item = mf_hash_find(&ht, key);', getline('.'))
+        cnext
+        call assert_equal('	item = mf_hash_find(&ht, key);', getline('.'))
+      endfor
     endif
 
     " Test: leading whitespace is not removed for cscope find text
diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim
index 7d8421b..33ab45f 100644
--- a/src/testdir/test_eval_stuff.vim
+++ b/src/testdir/test_eval_stuff.vim
Binary files differ
diff --git a/src/testdir/test_execute_func.vim b/src/testdir/test_execute_func.vim
index 3a8580e..b25f211 100644
--- a/src/testdir/test_execute_func.vim
+++ b/src/testdir/test_execute_func.vim
@@ -38,11 +38,9 @@
   call assert_equal("\nsomething", execute('echo "something"', 'silent'))
   call assert_equal("\nsomething", execute('echo "something"', 'silent!'))
   call assert_equal("", execute('burp', 'silent!'))
-  if has('float')
-    call assert_fails('call execute(3.4)', 'E492:')
-    call assert_equal("\nx", execute("echo \"x\"", 3.4))
-    call v9.CheckDefExecAndScriptFailure(['execute("echo \"x\"", 3.4)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1174:'])
-  endif
+  call assert_fails('call execute(3.4)', 'E492:')
+  call assert_equal("\nx", execute("echo \"x\"", 3.4))
+  call v9.CheckDefExecAndScriptFailure(['execute("echo \"x\"", 3.4)'], ['E1013: Argument 2: type mismatch, expected string but got float', 'E1174:'])
 endfunc
 
 func Test_execute_list()
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index 3cd2a0d..8e2345d 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -77,9 +77,7 @@
       call assert_equal(0z00, 0z00 ?? 456)
       call assert_equal([1], [1] ?? 456)
       call assert_equal({'one': 1}, {'one': 1} ?? 456)
-      if has('float')
-        call assert_equal(0.1, 0.1 ?? 456)
-      endif
+      call assert_equal(0.1, 0.1 ?? 456)
 
       call assert_equal(456, v:false ?? 456)
       call assert_equal(456, 0 ?? 456)
@@ -87,9 +85,7 @@
       call assert_equal(456, 0z ?? 456)
       call assert_equal(456, [] ?? 456)
       call assert_equal(456, {} ?? 456)
-      if has('float')
-        call assert_equal(456, 0.0 ?? 456)
-      endif
+      call assert_equal(456, 0.0 ?? 456)
   END
   call v9.CheckLegacyAndVim9Success(lines)
 endfunc
@@ -200,10 +196,8 @@
   call assert_false(s:value == v:null)
   let s:value = 0
   call assert_true(s:value == v:null)
-  if has('float')
-    let s:value = 0.0
-    call assert_true(s:value == v:null)
-  endif
+  let s:value = 0.0
+  call assert_true(s:value == v:null)
   let s:value = ''
   call assert_false(s:value == v:null)
   let s:value = 0z
@@ -467,116 +461,114 @@
 endfunc
 
 func Test_printf_float()
-  if has('float')
-    let lines =<< trim END
-        call assert_equal('1.000000', printf('%f', 1))
-        call assert_equal('1.230000', printf('%f', 1.23))
-        call assert_equal('1.230000', printf('%F', 1.23))
-        call assert_equal('9999999.9', printf('%g', 9999999.9))
-        call assert_equal('9999999.9', printf('%G', 9999999.9))
-        call assert_equal('1.00000001e7', printf('%.8g', 10000000.1))
-        call assert_equal('1.00000001E7', printf('%.8G', 10000000.1))
-        call assert_equal('1.230000e+00', printf('%e', 1.23))
-        call assert_equal('1.230000E+00', printf('%E', 1.23))
-        call assert_equal('1.200000e-02', printf('%e', 0.012))
-        call assert_equal('-1.200000e-02', printf('%e', -0.012))
-        call assert_equal('0.33', printf('%.2f', 1.0 / 3.0))
-        call assert_equal('  0.33', printf('%6.2f', 1.0 / 3.0))
-        call assert_equal(' -0.33', printf('%6.2f', -1.0 / 3.0))
-        call assert_equal('000.33', printf('%06.2f', 1.0 / 3.0))
-        call assert_equal('-00.33', printf('%06.2f', -1.0 / 3.0))
-        call assert_equal('-00.33', printf('%+06.2f', -1.0 / 3.0))
-        call assert_equal('+00.33', printf('%+06.2f', 1.0 / 3.0))
-        call assert_equal(' 00.33', printf('% 06.2f', 1.0 / 3.0))
-        call assert_equal('000.33', printf('%06.2g', 1.0 / 3.0))
-        call assert_equal('-00.33', printf('%06.2g', -1.0 / 3.0))
-        call assert_equal('0.33', printf('%3.2f', 1.0 / 3.0))
-        call assert_equal('003.33e-01', printf('%010.2e', 1.0 / 3.0))
-        call assert_equal(' 03.33e-01', printf('% 010.2e', 1.0 / 3.0))
-        call assert_equal('+03.33e-01', printf('%+010.2e', 1.0 / 3.0))
-        call assert_equal('-03.33e-01', printf('%010.2e', -1.0 / 3.0))
+  let lines =<< trim END
+      call assert_equal('1.000000', printf('%f', 1))
+      call assert_equal('1.230000', printf('%f', 1.23))
+      call assert_equal('1.230000', printf('%F', 1.23))
+      call assert_equal('9999999.9', printf('%g', 9999999.9))
+      call assert_equal('9999999.9', printf('%G', 9999999.9))
+      call assert_equal('1.00000001e7', printf('%.8g', 10000000.1))
+      call assert_equal('1.00000001E7', printf('%.8G', 10000000.1))
+      call assert_equal('1.230000e+00', printf('%e', 1.23))
+      call assert_equal('1.230000E+00', printf('%E', 1.23))
+      call assert_equal('1.200000e-02', printf('%e', 0.012))
+      call assert_equal('-1.200000e-02', printf('%e', -0.012))
+      call assert_equal('0.33', printf('%.2f', 1.0 / 3.0))
+      call assert_equal('  0.33', printf('%6.2f', 1.0 / 3.0))
+      call assert_equal(' -0.33', printf('%6.2f', -1.0 / 3.0))
+      call assert_equal('000.33', printf('%06.2f', 1.0 / 3.0))
+      call assert_equal('-00.33', printf('%06.2f', -1.0 / 3.0))
+      call assert_equal('-00.33', printf('%+06.2f', -1.0 / 3.0))
+      call assert_equal('+00.33', printf('%+06.2f', 1.0 / 3.0))
+      call assert_equal(' 00.33', printf('% 06.2f', 1.0 / 3.0))
+      call assert_equal('000.33', printf('%06.2g', 1.0 / 3.0))
+      call assert_equal('-00.33', printf('%06.2g', -1.0 / 3.0))
+      call assert_equal('0.33', printf('%3.2f', 1.0 / 3.0))
+      call assert_equal('003.33e-01', printf('%010.2e', 1.0 / 3.0))
+      call assert_equal(' 03.33e-01', printf('% 010.2e', 1.0 / 3.0))
+      call assert_equal('+03.33e-01', printf('%+010.2e', 1.0 / 3.0))
+      call assert_equal('-03.33e-01', printf('%010.2e', -1.0 / 3.0))
 
-        #" When precision is 0, the dot should be omitted.
-        call assert_equal('  2', printf('%3.f', 7.0 / 3.0))
-        call assert_equal('  2', printf('%3.g', 7.0 / 3.0))
-        call assert_equal('  2e+00', printf('%7.e', 7.0 / 3.0))
+      #" When precision is 0, the dot should be omitted.
+      call assert_equal('  2', printf('%3.f', 7.0 / 3.0))
+      call assert_equal('  2', printf('%3.g', 7.0 / 3.0))
+      call assert_equal('  2e+00', printf('%7.e', 7.0 / 3.0))
 
-        #" Float zero can be signed.
-        call assert_equal('+0.000000', printf('%+f', 0.0))
-        call assert_equal('0.000000', printf('%f', 1.0 / (1.0 / 0.0)))
-        call assert_equal('-0.000000', printf('%f', 1.0 / (-1.0 / 0.0)))
-        call assert_equal('0.0', printf('%s', 1.0 / (1.0 / 0.0)))
-        call assert_equal('-0.0', printf('%s', 1.0 / (-1.0 / 0.0)))
-        call assert_equal('0.0', printf('%S', 1.0 / (1.0 / 0.0)))
-        call assert_equal('-0.0', printf('%S', 1.0 / (-1.0 / 0.0)))
+      #" Float zero can be signed.
+      call assert_equal('+0.000000', printf('%+f', 0.0))
+      call assert_equal('0.000000', printf('%f', 1.0 / (1.0 / 0.0)))
+      call assert_equal('-0.000000', printf('%f', 1.0 / (-1.0 / 0.0)))
+      call assert_equal('0.0', printf('%s', 1.0 / (1.0 / 0.0)))
+      call assert_equal('-0.0', printf('%s', 1.0 / (-1.0 / 0.0)))
+      call assert_equal('0.0', printf('%S', 1.0 / (1.0 / 0.0)))
+      call assert_equal('-0.0', printf('%S', 1.0 / (-1.0 / 0.0)))
 
-        #" Float infinity can be signed.
-        call assert_equal('inf', printf('%f', 1.0 / 0.0))
-        call assert_equal('-inf', printf('%f', -1.0 / 0.0))
-        call assert_equal('inf', printf('%g', 1.0 / 0.0))
-        call assert_equal('-inf', printf('%g', -1.0 / 0.0))
-        call assert_equal('inf', printf('%e', 1.0 / 0.0))
-        call assert_equal('-inf', printf('%e', -1.0 / 0.0))
-        call assert_equal('INF', printf('%F', 1.0 / 0.0))
-        call assert_equal('-INF', printf('%F', -1.0 / 0.0))
-        call assert_equal('INF', printf('%E', 1.0 / 0.0))
-        call assert_equal('-INF', printf('%E', -1.0 / 0.0))
-        call assert_equal('INF', printf('%E', 1.0 / 0.0))
-        call assert_equal('-INF', printf('%G', -1.0 / 0.0))
-        call assert_equal('+inf', printf('%+f', 1.0 / 0.0))
-        call assert_equal('-inf', printf('%+f', -1.0 / 0.0))
-        call assert_equal(' inf', printf('% f',  1.0 / 0.0))
-        call assert_equal('   inf', printf('%6f', 1.0 / 0.0))
-        call assert_equal('  -inf', printf('%6f', -1.0 / 0.0))
-        call assert_equal('   inf', printf('%6g', 1.0 / 0.0))
-        call assert_equal('  -inf', printf('%6g', -1.0 / 0.0))
-        call assert_equal('  +inf', printf('%+6f', 1.0 / 0.0))
-        call assert_equal('   inf', printf('% 6f', 1.0 / 0.0))
-        call assert_equal('  +inf', printf('%+06f', 1.0 / 0.0))
-        call assert_equal('inf   ', printf('%-6f', 1.0 / 0.0))
-        call assert_equal('-inf  ', printf('%-6f', -1.0 / 0.0))
-        call assert_equal('+inf  ', printf('%-+6f', 1.0 / 0.0))
-        call assert_equal(' inf  ', printf('%- 6f', 1.0 / 0.0))
-        call assert_equal('-INF  ', printf('%-6F', -1.0 / 0.0))
-        call assert_equal('+INF  ', printf('%-+6F', 1.0 / 0.0))
-        call assert_equal(' INF  ', printf('%- 6F', 1.0 / 0.0))
-        call assert_equal('INF   ', printf('%-6G', 1.0 / 0.0))
-        call assert_equal('-INF  ', printf('%-6G', -1.0 / 0.0))
-        call assert_equal('INF   ', printf('%-6E', 1.0 / 0.0))
-        call assert_equal('-INF  ', printf('%-6E', -1.0 / 0.0))
-        call assert_equal('inf', printf('%s', 1.0 / 0.0))
-        call assert_equal('-inf', printf('%s', -1.0 / 0.0))
+      #" Float infinity can be signed.
+      call assert_equal('inf', printf('%f', 1.0 / 0.0))
+      call assert_equal('-inf', printf('%f', -1.0 / 0.0))
+      call assert_equal('inf', printf('%g', 1.0 / 0.0))
+      call assert_equal('-inf', printf('%g', -1.0 / 0.0))
+      call assert_equal('inf', printf('%e', 1.0 / 0.0))
+      call assert_equal('-inf', printf('%e', -1.0 / 0.0))
+      call assert_equal('INF', printf('%F', 1.0 / 0.0))
+      call assert_equal('-INF', printf('%F', -1.0 / 0.0))
+      call assert_equal('INF', printf('%E', 1.0 / 0.0))
+      call assert_equal('-INF', printf('%E', -1.0 / 0.0))
+      call assert_equal('INF', printf('%E', 1.0 / 0.0))
+      call assert_equal('-INF', printf('%G', -1.0 / 0.0))
+      call assert_equal('+inf', printf('%+f', 1.0 / 0.0))
+      call assert_equal('-inf', printf('%+f', -1.0 / 0.0))
+      call assert_equal(' inf', printf('% f',  1.0 / 0.0))
+      call assert_equal('   inf', printf('%6f', 1.0 / 0.0))
+      call assert_equal('  -inf', printf('%6f', -1.0 / 0.0))
+      call assert_equal('   inf', printf('%6g', 1.0 / 0.0))
+      call assert_equal('  -inf', printf('%6g', -1.0 / 0.0))
+      call assert_equal('  +inf', printf('%+6f', 1.0 / 0.0))
+      call assert_equal('   inf', printf('% 6f', 1.0 / 0.0))
+      call assert_equal('  +inf', printf('%+06f', 1.0 / 0.0))
+      call assert_equal('inf   ', printf('%-6f', 1.0 / 0.0))
+      call assert_equal('-inf  ', printf('%-6f', -1.0 / 0.0))
+      call assert_equal('+inf  ', printf('%-+6f', 1.0 / 0.0))
+      call assert_equal(' inf  ', printf('%- 6f', 1.0 / 0.0))
+      call assert_equal('-INF  ', printf('%-6F', -1.0 / 0.0))
+      call assert_equal('+INF  ', printf('%-+6F', 1.0 / 0.0))
+      call assert_equal(' INF  ', printf('%- 6F', 1.0 / 0.0))
+      call assert_equal('INF   ', printf('%-6G', 1.0 / 0.0))
+      call assert_equal('-INF  ', printf('%-6G', -1.0 / 0.0))
+      call assert_equal('INF   ', printf('%-6E', 1.0 / 0.0))
+      call assert_equal('-INF  ', printf('%-6E', -1.0 / 0.0))
+      call assert_equal('inf', printf('%s', 1.0 / 0.0))
+      call assert_equal('-inf', printf('%s', -1.0 / 0.0))
 
-        #" Test special case where max precision is truncated at 340.
-        call assert_equal('1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.330f', 1.0))
-        call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.340f', 1.0))
-        call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.350f', 1.0))
+      #" Test special case where max precision is truncated at 340.
+      call assert_equal('1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.330f', 1.0))
+      call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.340f', 1.0))
+      call assert_equal('1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', printf('%.350f', 1.0))
 
-        #" Float nan (not a number) has no sign.
-        call assert_equal('nan', printf('%f', sqrt(-1.0)))
-        call assert_equal('nan', printf('%f', 0.0 / 0.0))
-        call assert_equal('nan', printf('%f', -0.0 / 0.0))
-        call assert_equal('nan', printf('%g', 0.0 / 0.0))
-        call assert_equal('nan', printf('%e', 0.0 / 0.0))
-        call assert_equal('NAN', printf('%F', 0.0 / 0.0))
-        call assert_equal('NAN', printf('%G', 0.0 / 0.0))
-        call assert_equal('NAN', printf('%E', 0.0 / 0.0))
-        call assert_equal('NAN', printf('%F', -0.0 / 0.0))
-        call assert_equal('NAN', printf('%G', -0.0 / 0.0))
-        call assert_equal('NAN', printf('%E', -0.0 / 0.0))
-        call assert_equal('   nan', printf('%6f', 0.0 / 0.0))
-        call assert_equal('   nan', printf('%06f', 0.0 / 0.0))
-        call assert_equal('nan   ', printf('%-6f', 0.0 / 0.0))
-        call assert_equal('nan   ', printf('%- 6f', 0.0 / 0.0))
-        call assert_equal('nan', printf('%s', 0.0 / 0.0))
-        call assert_equal('nan', printf('%s', -0.0 / 0.0))
-        call assert_equal('nan', printf('%S', 0.0 / 0.0))
-        call assert_equal('nan', printf('%S', -0.0 / 0.0))
-    END
-    call v9.CheckLegacyAndVim9Success(lines)
+      #" Float nan (not a number) has no sign.
+      call assert_equal('nan', printf('%f', sqrt(-1.0)))
+      call assert_equal('nan', printf('%f', 0.0 / 0.0))
+      call assert_equal('nan', printf('%f', -0.0 / 0.0))
+      call assert_equal('nan', printf('%g', 0.0 / 0.0))
+      call assert_equal('nan', printf('%e', 0.0 / 0.0))
+      call assert_equal('NAN', printf('%F', 0.0 / 0.0))
+      call assert_equal('NAN', printf('%G', 0.0 / 0.0))
+      call assert_equal('NAN', printf('%E', 0.0 / 0.0))
+      call assert_equal('NAN', printf('%F', -0.0 / 0.0))
+      call assert_equal('NAN', printf('%G', -0.0 / 0.0))
+      call assert_equal('NAN', printf('%E', -0.0 / 0.0))
+      call assert_equal('   nan', printf('%6f', 0.0 / 0.0))
+      call assert_equal('   nan', printf('%06f', 0.0 / 0.0))
+      call assert_equal('nan   ', printf('%-6f', 0.0 / 0.0))
+      call assert_equal('nan   ', printf('%- 6f', 0.0 / 0.0))
+      call assert_equal('nan', printf('%s', 0.0 / 0.0))
+      call assert_equal('nan', printf('%s', -0.0 / 0.0))
+      call assert_equal('nan', printf('%S', 0.0 / 0.0))
+      call assert_equal('nan', printf('%S', -0.0 / 0.0))
+  END
+  call v9.CheckLegacyAndVim9Success(lines)
 
-    call v9.CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:')
-  endif
+  call v9.CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:')
 endfunc
 
 func Test_printf_errors()
@@ -585,10 +577,8 @@
   call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1, 2)'], 'E767:')
   call v9.CheckLegacyAndVim9Failure(['echo printf("%*d", 1)'], 'E766:')
   call v9.CheckLegacyAndVim9Failure(['echo printf("%s")'], 'E766:')
-  if has('float')
-    call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1.2)'], 'E805:')
-    call v9.CheckLegacyAndVim9Failure(['echo printf("%f")'], 'E766:')
-  endif
+  call v9.CheckLegacyAndVim9Failure(['echo printf("%d", 1.2)'], 'E805:')
+  call v9.CheckLegacyAndVim9Failure(['echo printf("%f")'], 'E766:')
 endfunc
 
 func Test_printf_64bit()
@@ -607,9 +597,7 @@
       call assert_equal("abcdefgi", printf('%s', "abcdefgi"))
 
       #" float
-      if has('float')
-        call assert_equal("1.23", printf('%s', 1.23))
-      endif
+      call assert_equal("1.23", printf('%s', 1.23))
 
       #" list
       VAR lvalue = [1, 'two', ['three', 4]]
@@ -878,8 +866,6 @@
 
 " Test for float value comparison
 func Test_float_compare()
-  CheckFeature float
-
   let lines =<< trim END
       call assert_true(1.2 == 1.2)
       call assert_true(1.0 != 1.2)
diff --git a/src/testdir/test_float_func.vim b/src/testdir/test_float_func.vim
index 8ef1b9d..acc2e11 100644
--- a/src/testdir/test_float_func.vim
+++ b/src/testdir/test_float_func.vim
@@ -1,7 +1,6 @@
 " test float functions
 
 source check.vim
-CheckFeature float
 import './vim9.vim' as v9
 
 func Test_abs()
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 4c71e22..ba6b790 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -54,14 +54,12 @@
   call assert_equal(0, empty(1))
   call assert_equal(0, empty(-1))
 
-  if has('float')
-    call assert_equal(1, empty(0.0))
-    call assert_equal(1, empty(-0.0))
-    call assert_equal(0, empty(1.0))
-    call assert_equal(0, empty(-1.0))
-    call assert_equal(0, empty(1.0/0.0))
-    call assert_equal(0, empty(0.0/0.0))
-  endif
+  call assert_equal(1, empty(0.0))
+  call assert_equal(1, empty(-0.0))
+  call assert_equal(0, empty(1.0))
+  call assert_equal(0, empty(-1.0))
+  call assert_equal(0, empty(1.0/0.0))
+  call assert_equal(0, empty(0.0/0.0))
 
   call assert_equal(1, empty([]))
   call assert_equal(0, empty(['a']))
@@ -90,9 +88,7 @@
 
 func Test_test_void()
   call assert_fails('echo 1 == test_void()', 'E1031:')
-  if has('float')
-    call assert_fails('echo 1.0 == test_void()', 'E1031:')
-  endif
+  call assert_fails('echo 1.0 == test_void()', 'E1031:')
   call assert_fails('let x = json_encode(test_void())', 'E685:')
   call assert_fails('let x = copy(test_void())', 'E685:')
   call assert_fails('let x = copy([test_void()])', 'E1031:')
@@ -175,10 +171,8 @@
     call assert_fails('call strwidth({})', 'E731:')
   endfor
 
-  if has('float')
-    call assert_equal(3, strwidth(1.2))
-    call v9.CheckDefAndScriptFailure(['echo strwidth(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
-  endif
+  call assert_equal(3, strwidth(1.2))
+  call v9.CheckDefAndScriptFailure(['echo strwidth(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
 
   set ambiwidth&
 endfunc
@@ -242,10 +236,8 @@
 
   call assert_fails('call str2nr([])', 'E730:')
   call assert_fails('call str2nr({->2})', 'E729:')
-  if has('float')
-    call assert_equal(1, str2nr(1.2))
-    call v9.CheckDefAndScriptFailure(['echo str2nr(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
-  endif
+  call assert_equal(1, str2nr(1.2))
+  call v9.CheckDefAndScriptFailure(['echo str2nr(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
   call assert_fails('call str2nr(10, [])', 'E745:')
 endfunc
 
@@ -504,10 +496,8 @@
   call assert_fails('call simplify({->0})', 'E729:')
   call assert_fails('call simplify([])', 'E730:')
   call assert_fails('call simplify({})', 'E731:')
-  if has('float')
-    call assert_equal('1.2', simplify(1.2))
-    call v9.CheckDefAndScriptFailure(['echo simplify(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
-  endif
+  call assert_equal('1.2', simplify(1.2))
+  call v9.CheckDefAndScriptFailure(['echo simplify(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
 endfunc
 
 func Test_pathshorten()
diff --git a/src/testdir/test_glob2regpat.vim b/src/testdir/test_glob2regpat.vim
index 17ae3fc..965ca5c 100644
--- a/src/testdir/test_glob2regpat.vim
+++ b/src/testdir/test_glob2regpat.vim
@@ -3,10 +3,8 @@
 import './vim9.vim' as v9
 
 func Test_glob2regpat_invalid()
-  if has('float')
-    call assert_equal('^1\.33$', glob2regpat(1.33))
-    call v9.CheckDefAndScriptFailure(['echo glob2regpat(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
-  endif
+  call assert_equal('^1\.33$', glob2regpat(1.33))
+  call v9.CheckDefAndScriptFailure(['echo glob2regpat(1.2)'], ['E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1'])
   call assert_fails('call glob2regpat("}")', 'E219:')
   call assert_fails('call glob2regpat("{")', 'E220:')
 endfunc
diff --git a/src/testdir/test_json.vim b/src/testdir/test_json.vim
index 3ee7837..96eddc2 100644
--- a/src/testdir/test_json.vim
+++ b/src/testdir/test_json.vim
@@ -21,16 +21,14 @@
 let s:varmb = "s¢cĴgё"
 let s:jsonnr = '1234'
 let s:varnr = 1234
-if has('float')
-  let s:jsonfl = '12.34'
-  let s:varfl = 12.34
-  let s:jsonneginf = '-Infinity'
-  let s:jsonposinf = 'Infinity'
-  let s:varneginf = -1.0 / 0.0
-  let s:varposinf = 1.0 / 0.0
-  let s:jsonnan = 'NaN'
-  let s:varnan = 0.0 / 0.0
-endif
+let s:jsonfl = '12.34'
+let s:varfl = 12.34
+let s:jsonneginf = '-Infinity'
+let s:jsonposinf = 'Infinity'
+let s:varneginf = -1.0 / 0.0
+let s:varposinf = 1.0 / 0.0
+let s:jsonnan = 'NaN'
+let s:varnan = 0.0 / 0.0
 
 let s:jsonl1 = '[1,"a",3]'
 let s:varl1 = [1, "a", 3]
@@ -82,12 +80,10 @@
   " no test for surrogate pair, json_encode() doesn't create them.
 
   call assert_equal(s:jsonnr, json_encode(s:varnr))
-  if has('float')
-    call assert_equal(s:jsonfl, json_encode(s:varfl))
-    call assert_equal(s:jsonneginf, json_encode(s:varneginf))
-    call assert_equal(s:jsonposinf, json_encode(s:varposinf))
-    call assert_equal(s:jsonnan, json_encode(s:varnan))
-  endif
+  call assert_equal(s:jsonfl, json_encode(s:varfl))
+  call assert_equal(s:jsonneginf, json_encode(s:varneginf))
+  call assert_equal(s:jsonposinf, json_encode(s:varposinf))
+  call assert_equal(s:jsonnan, json_encode(s:varnan))
 
   call assert_equal(s:jsonl1, json_encode(s:varl1))
   call assert_equal(s:jsonl2, json_encode(s:varl2))
@@ -133,9 +129,7 @@
   call assert_equal(s:varsp2, json_decode(s:jsonsp2))
 
   call assert_equal(s:varnr, json_decode(s:jsonnr))
-  if has('float')
-    call assert_equal(s:varfl, json_decode(s:jsonfl))
-  endif
+  call assert_equal(s:varfl, json_decode(s:jsonfl))
 
   call assert_equal(s:varl1, json_decode(s:jsonl1))
   call assert_equal(s:varl2x, json_decode(s:jsonl2))
@@ -189,9 +183,7 @@
   call assert_fails('call json_decode("{\"n\":1,")', "E491:")
   call assert_fails('call json_decode("{\"n\",1}")', "E491:")
   call assert_fails('call json_decode("{-}")', "E491:")
-  if has('float')
-    call assert_fails('call json_decode("{3.14:1}")', "E806:")
-  endif
+  call assert_fails('call json_decode("{3.14:1}")', "E806:")
 
   call assert_fails('call json_decode("[foobar]")', "E491:")
   call assert_fails('call json_decode("[")', "E491:")
@@ -230,12 +222,10 @@
   " no test for surrogate pair, js_encode() doesn't create them.
 
   call assert_equal(s:jsonnr, js_encode(s:varnr))
-  if has('float')
-    call assert_equal(s:jsonfl, js_encode(s:varfl))
-    call assert_equal(s:jsonneginf, js_encode(s:varneginf))
-    call assert_equal(s:jsonposinf, js_encode(s:varposinf))
-    call assert_equal(s:jsonnan, js_encode(s:varnan))
-  endif
+  call assert_equal(s:jsonfl, js_encode(s:varfl))
+  call assert_equal(s:jsonneginf, js_encode(s:varneginf))
+  call assert_equal(s:jsonposinf, js_encode(s:varposinf))
+  call assert_equal(s:jsonnan, js_encode(s:varnan))
 
   call assert_equal(s:jsonl1, js_encode(s:varl1))
   call assert_equal(s:jsonl2, js_encode(s:varl2))
@@ -270,12 +260,10 @@
   call assert_equal(s:varsp2, js_decode(s:jsonsp2))
 
   call assert_equal(s:varnr, js_decode(s:jsonnr))
-  if has('float')
-    call assert_equal(s:varfl, js_decode(s:jsonfl))
-    call assert_equal(s:varneginf, js_decode(s:jsonneginf))
-    call assert_equal(s:varposinf, js_decode(s:jsonposinf))
-    call assert_true(isnan(js_decode(s:jsonnan)))
-  endif
+  call assert_equal(s:varfl, js_decode(s:jsonfl))
+  call assert_equal(s:varneginf, js_decode(s:jsonneginf))
+  call assert_equal(s:varposinf, js_decode(s:jsonposinf))
+  call assert_true(isnan(js_decode(s:jsonnan)))
 
   call assert_equal(s:varl1, js_decode(s:jsonl1))
   call assert_equal(s:varl2x, js_decode(s:jsonl2))
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index 63ba47f..4476e2b 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -966,20 +966,18 @@
       call assert_equal(['-0', 'A11', 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5], uniq(copy(l)))
       call assert_equal([1.5, [0, 1, 2], 'x8', [0, 1, 2], 'foo', 'foo6', 'foo', 4, 'xaaa', 2, 2, 'A11', '-0'], reverse(l))
       call assert_equal([1.5, [0, 1, 2], 'x8', [0, 1, 2], 'foo', 'foo6', 'foo', 4, 'xaaa', 2, 2, 'A11', '-0'], reverse(reverse(l)))
-      if has('float')
-        call assert_equal(['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]], sort(l))
-        call assert_equal([[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'], reverse(sort(l)))
-        call assert_equal(['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]], sort(reverse(sort(l))))
-        call assert_equal(['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]], uniq(sort(l)))
+      call assert_equal(['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]], sort(l))
+      call assert_equal([[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'], reverse(sort(l)))
+      call assert_equal(['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]], sort(reverse(sort(l))))
+      call assert_equal(['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]], uniq(sort(l)))
 
-        LET l = [7, 9, 'one', 18, 12, 22, 'two', 10.0e-16, -1, 'three', 0xff, 0.22, 'four']
-        call assert_equal([-1, 'one', 'two', 'three', 'four', 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255], sort(copy(l), 'n'))
+      LET l = [7, 9, 'one', 18, 12, 22, 'two', 10.0e-16, -1, 'three', 0xff, 0.22, 'four']
+      call assert_equal([-1, 'one', 'two', 'three', 'four', 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255], sort(copy(l), 'n'))
 
-        LET l = [7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []]
-        call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), 'i'))
-        call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), 'i'))
-        call assert_equal(['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l)))
-      endif
+      LET l = [7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []]
+      call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), 'i'))
+      call assert_equal(['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l), 'i'))
+      call assert_equal(['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}], sort(copy(l)))
   END
   call v9.CheckLegacyAndVim9Success(lines)
 
@@ -1173,9 +1171,7 @@
   let l = [1, 2, 3]
   call assert_fails("call extend(l, [4, 5, 6], 4)", 'E684:')
   call assert_fails("call extend(l, [4, 5, 6], -4)", 'E684:')
-  if has('float')
-    call assert_fails("call extend(l, [4, 5, 6], 1.2)", 'E805:')
-  endif
+  call assert_fails("call extend(l, [4, 5, 6], 1.2)", 'E805:')
 
   " Test extend() with dictionaries.
 
@@ -1203,9 +1199,7 @@
   call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 'error')", 'E737:')
   call assert_fails("call extend(d, {'b': 0}, [])", 'E730:')
   call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 'xxx')", 'E475:')
-  if has('float')
-    call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 1.2)", 'E475:')
-  endif
+  call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 1.2)", 'E475:')
   call assert_equal({'a': 'A', 'b': 'B'}, d)
 
   call assert_fails("call extend([1, 2], 1)", 'E712:')
diff --git a/src/testdir/test_lua.vim b/src/testdir/test_lua.vim
index 7fcd13d..2a08607 100644
--- a/src/testdir/test_lua.vim
+++ b/src/testdir/test_lua.vim
@@ -10,7 +10,6 @@
 endfunc
 
 CheckFeature lua
-CheckFeature float
 
 " Depending on the lua version, the error messages are different.
 let [s:major, s:minor, s:patch] = luaeval('vim.lua_version')->split('\.')->map({-> str2nr(v:val)})
diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim
index 6dc9a5b..e35fb0c 100644
--- a/src/testdir/test_messages.vim
+++ b/src/testdir/test_messages.vim
@@ -74,9 +74,7 @@
   call assert_equal("\n[1, 2, []]", execute(':echomsg [1, 2, test_null_list()]'))
   call assert_equal("\n{}", execute(':echomsg {}'))
   call assert_equal("\n{'a': 1, 'b': 2}", execute(':echomsg {"a": 1, "b": 2}'))
-  if has('float')
-    call assert_equal("\n1.23", execute(':echomsg 1.23'))
-  endif
+  call assert_equal("\n1.23", execute(':echomsg 1.23'))
   call assert_match("function('<lambda>\\d*')", execute(':echomsg {-> 1234}'))
 endfunc
 
@@ -86,9 +84,7 @@
   call assert_equal("\n12345 IgNoRe", execute(':echoerr 12345 "IgNoRe"'))
   call assert_equal("\n[1, 2, 'IgNoRe']", execute(':echoerr [1, 2, "IgNoRe"]'))
   call assert_equal("\n{'IgNoRe': 2, 'a': 1}", execute(':echoerr {"a": 1, "IgNoRe": 2}'))
-  if has('float')
-    call assert_equal("\n1.23 IgNoRe", execute(':echoerr 1.23 "IgNoRe"'))
-  endif
+  call assert_equal("\n1.23 IgNoRe", execute(':echoerr 1.23 "IgNoRe"'))
   eval '<lambda>'->test_ignore_error()
   call assert_match("function('<lambda>\\d*')", execute(':echoerr {-> 1234}'))
   call test_ignore_error('RESET')
diff --git a/src/testdir/test_method.vim b/src/testdir/test_method.vim
index d31cce1..29734e0 100644
--- a/src/testdir/test_method.vim
+++ b/src/testdir/test_method.vim
@@ -121,7 +121,6 @@
 endfunc
 
 func Test_method_float()
-  CheckFeature float
   eval 1.234->string()->assert_equal('1.234')
   eval -1.234->string()->assert_equal('-1.234')
 endfunc
diff --git a/src/testdir/test_perl.vim b/src/testdir/test_perl.vim
index cf4ca75..681aaae 100644
--- a/src/testdir/test_perl.vim
+++ b/src/testdir/test_perl.vim
@@ -163,11 +163,7 @@
   call assert_equal(0, perleval('0'))
   call assert_equal(2, perleval('2'))
   call assert_equal(-2, perleval('-2'))
-  if has('float')
-    call assert_equal(2.5, perleval('2.5'))
-  else
-    call assert_equal(2, perleval('2.5'))
-  end
+  call assert_equal(2.5, perleval('2.5'))
 
   sandbox call assert_equal(2, perleval('2'))
 
diff --git a/src/testdir/test_python2.vim b/src/testdir/test_python2.vim
index af1e340..066b4bd 100644
--- a/src/testdir/test_python2.vim
+++ b/src/testdir/test_python2.vim
@@ -686,7 +686,6 @@
 endfunc
 
 func Test_python_float()
-  CheckFeature float
   let l = [0.0]
   py l = vim.bindeval('l')
   py l.extend([0.0])
@@ -785,9 +784,7 @@
   py v = vim.eval('test_null_function()')
   call assert_equal(v:none, pyeval('v'))
 
-  if has('float')
-    call assert_equal(0.0, pyeval('0.0'))
-  endif
+  call assert_equal(0.0, pyeval('0.0'))
 
   " Evaluate an invalid values
   call AssertException(['let v = pyeval(''"\0"'')'], 'E859:')
diff --git a/src/testdir/test_python3.vim b/src/testdir/test_python3.vim
index 437da51..5808227 100644
--- a/src/testdir/test_python3.vim
+++ b/src/testdir/test_python3.vim
@@ -286,16 +286,14 @@
 " Test vim.eval() with various types.
 func Test_python3_vim_val()
   call assert_equal("\n8",             execute('py3 print(vim.eval("3+5"))'))
-  if has('float')
-    call assert_equal("\n3.140000",    execute('py3 print(vim.eval("1.01+2.13"))'))
-    call assert_equal("\n0.000000",    execute('py3 print(vim.eval("0.0/(1.0/0.0)"))'))
-    call assert_equal("\n0.000000",    execute('py3 print(vim.eval("0.0/(1.0/0.0)"))'))
-    call assert_equal("\n-0.000000",   execute('py3 print(vim.eval("0.0/(-1.0/0.0)"))'))
-    " Commented out: output of infinity and nan depend on platforms.
-    " call assert_equal("\ninf",         execute('py3 print(vim.eval("1.0/0.0"))'))
-    " call assert_equal("\n-inf",        execute('py3 print(vim.eval("-1.0/0.0"))'))
-    " call assert_equal("\n-nan",        execute('py3 print(vim.eval("0.0/0.0"))'))
-  endif
+  call assert_equal("\n3.140000",    execute('py3 print(vim.eval("1.01+2.13"))'))
+  call assert_equal("\n0.000000",    execute('py3 print(vim.eval("0.0/(1.0/0.0)"))'))
+  call assert_equal("\n0.000000",    execute('py3 print(vim.eval("0.0/(1.0/0.0)"))'))
+  call assert_equal("\n-0.000000",   execute('py3 print(vim.eval("0.0/(-1.0/0.0)"))'))
+  " Commented out: output of infinity and nan depend on platforms.
+  " call assert_equal("\ninf",         execute('py3 print(vim.eval("1.0/0.0"))'))
+  " call assert_equal("\n-inf",        execute('py3 print(vim.eval("-1.0/0.0"))'))
+  " call assert_equal("\n-nan",        execute('py3 print(vim.eval("0.0/0.0"))'))
   call assert_equal("\nabc",           execute('py3 print(vim.eval("\"abc\""))'))
   call assert_equal("\n['1', '2']",    execute('py3 print(vim.eval("[1, 2]"))'))
   call assert_equal("\n{'1': '2'}",    execute('py3 print(vim.eval("{1:2}"))'))
@@ -879,7 +877,6 @@
 endfunc
 
 func Test_python3_float()
-  CheckFeature float
   let l = [0.0]
   py3 l = vim.bindeval('l')
   py3 l.extend([0.0])
@@ -982,9 +979,7 @@
   py3 v = vim.eval('test_null_function()')
   call assert_equal(v:none, py3eval('v'))
 
-  if has('float')
-    call assert_equal(0.0, py3eval('0.0'))
-  endif
+  call assert_equal(0.0, py3eval('0.0'))
 
   " Evaluate an invalid values
   call AssertException(['let v = py3eval(''"\0"'')'], 'E859:')
diff --git a/src/testdir/test_random.vim b/src/testdir/test_random.vim
index 1457310..afb3044 100644
--- a/src/testdir/test_random.vim
+++ b/src/testdir/test_random.vim
@@ -26,9 +26,7 @@
   call assert_equal(1001954530, rand())
   call test_srand_seed()
 
-  if has('float')
-    call assert_fails('echo srand(1.2)', 'E805:')
-  endif
+  call assert_fails('echo srand(1.2)', 'E805:')
   call assert_fails('echo srand([1])', 'E745:')
   call assert_fails('echo rand("burp")', 'E475:')
   call assert_fails('echo rand([1, 2, 3])', 'E730:')
diff --git a/src/testdir/test_reltime.vim b/src/testdir/test_reltime.vim
index 2f2e7ae..54104d5 100644
--- a/src/testdir/test_reltime.vim
+++ b/src/testdir/test_reltime.vim
@@ -2,7 +2,6 @@
 
 source check.vim
 CheckFeature reltime
-CheckFeature float
 
 func Test_reltime()
   let g:test_is_flaky = 1
diff --git a/src/testdir/test_ruby.vim b/src/testdir/test_ruby.vim
index 321ec40..224dffb 100644
--- a/src/testdir/test_ruby.vim
+++ b/src/testdir/test_ruby.vim
@@ -304,10 +304,8 @@
   " on versions of Ruby.
   call assert_match('^Integer\|Fixnum$', rubyeval('Vim::evaluate("123").class'))
 
-  if has('float')
-    call assert_equal(1.23,       rubyeval('Vim::evaluate("1.23")'))
-    call assert_equal('Float',    rubyeval('Vim::evaluate("1.23").class'))
-  endif
+  call assert_equal(1.23,       rubyeval('Vim::evaluate("1.23")'))
+  call assert_equal('Float',    rubyeval('Vim::evaluate("1.23").class'))
 
   call assert_equal('foo',      rubyeval('Vim::evaluate("\"foo\"")'))
   call assert_equal('String',   rubyeval('Vim::evaluate("\"foo\"").class'))
diff --git a/src/testdir/test_sort.vim b/src/testdir/test_sort.vim
index 783ca9e..124948e 100644
--- a/src/testdir/test_sort.vim
+++ b/src/testdir/test_sort.vim
@@ -62,7 +62,6 @@
 endfunc
 
 func Test_sort_float()
-  CheckFeature float
   call assert_equal([0.28, 3, 13.5], sort([13.5, 0.28, 3], 'f'))
 endfunc
 
@@ -72,8 +71,6 @@
 endfunc
 
 func Test_sort_default()
-  CheckFeature float
-
   " docs say omitted, empty or zero argument sorts on string representation.
   call assert_equal(['2', 'A', 'AA', 'a', 1, 3.3], sort([3.3, 1, "2", "A", "a", "AA"]))
   call assert_equal(['2', 'A', 'AA', 'a', 1, 3.3], sort([3.3, 1, "2", "A", "a", "AA"], ''))
@@ -1336,34 +1333,32 @@
           \ ]
     endif
   endif
-  if has('float')
-    let tests += [
-          \ {
-          \    'name' : 'float',
-          \    'cmd' : 'sort f',
-          \    'input' : [
-          \	'1.234',
-          \	'0.88',
-          \	'  +  123.456',
-          \	'1.15e-6',
-          \	'-1.1e3',
-          \	'-1.01e3',
-          \	'',
-          \	''
-          \    ],
-          \    'expected' : [
-          \	'',
-          \	'',
-          \	'-1.1e3',
-          \	'-1.01e3',
-          \	'1.15e-6',
-          \	'0.88',
-          \	'1.234',
-          \	'  +  123.456'
-          \    ]
-          \ },
-          \ ]
-  endif
+  let tests += [
+        \ {
+        \    'name' : 'float',
+        \    'cmd' : 'sort f',
+        \    'input' : [
+        \	'1.234',
+        \	'0.88',
+        \	'  +  123.456',
+        \	'1.15e-6',
+        \	'-1.1e3',
+        \	'-1.01e3',
+        \	'',
+        \	''
+        \    ],
+        \    'expected' : [
+        \	'',
+        \	'',
+        \	'-1.1e3',
+        \	'-1.01e3',
+        \	'1.15e-6',
+        \	'0.88',
+        \	'1.234',
+        \	'  +  123.456'
+        \    ]
+        \ },
+        \ ]
 
   for t in tests
     enew!
diff --git a/src/testdir/test_substitute.vim b/src/testdir/test_substitute.vim
index 9bbe997..1e73ba6 100644
--- a/src/testdir/test_substitute.vim
+++ b/src/testdir/test_substitute.vim
@@ -464,8 +464,6 @@
 endfunc
 
 func Test_substitute_float()
-  CheckFeature float
-
   call assert_equal('number 1.23', substitute('number ', '$', { -> 1.23 }, ''))
   vim9 assert_equal('number 1.23', substitute('number ', '$', () => 1.23, ''))
 endfunc
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 81e659e..fd427fe 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -478,9 +478,7 @@
 
   call assert_fails("call term_start(cmd, {'term_rows': -1})", 'E475:')
   call assert_fails("call term_start(cmd, {'term_rows': 1001})", 'E475:')
-  if has('float')
-    call assert_fails("call term_start(cmd, {'term_rows': 10.0})", 'E805:')
-  endif
+  call assert_fails("call term_start(cmd, {'term_rows': 10.0})", 'E805:')
 
   call delete('Xtext')
 endfunc
diff --git a/src/testdir/test_true_false.vim b/src/testdir/test_true_false.vim
index 2071f5e..4e95441 100644
--- a/src/testdir/test_true_false.vim
+++ b/src/testdir/test_true_false.vim
@@ -43,9 +43,7 @@
   call assert_fails('if [1]', 'E745:')
   call assert_fails('if {1: 1}', 'E728:')
   call assert_fails('if function("string")', 'E703:')
-  if has('float')
-    call assert_fails('if 1.3")', 'E805:')
-  endif
+  call assert_fails('if 1.3")', 'E805:')
 endfunc
 
 function Try_arg_true_false(expr, false_val, true_val)
@@ -117,7 +115,6 @@
 endfunc
 
 function Try_arg_non_zero(expr, false_val, true_val)
-  CheckFeature float
   for v in ['v:false', '0', '[1]', '{2:3}', '3.4'] 
     let r = eval(substitute(a:expr, '%v%', v, ''))
     call assert_equal(a:false_val, r, 'result for ' . v . ' is not ' . a:false_val . ' but ' . r)
diff --git a/src/testdir/test_user_func.vim b/src/testdir/test_user_func.vim
index 4721175..4a74bc0 100644
--- a/src/testdir/test_user_func.vim
+++ b/src/testdir/test_user_func.vim
@@ -129,11 +129,9 @@
 endfunc
 
 func Test_default_arg()
-  if has('float')
-    call assert_equal(1.0, Log(10))
-    call assert_equal(log(10), Log(10, exp(1)))
-    call assert_fails("call Log(1,2,3)", 'E118:')
-  endif
+  call assert_equal(1.0, Log(10))
+  call assert_equal(log(10), Log(10, exp(1)))
+  call assert_fails("call Log(1,2,3)", 'E118:')
 
   let res = Args(1)
   call assert_equal(res.mandatory, 1)
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 11d7425..730212d 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -96,9 +96,7 @@
 
     # calling job_start() is in test_vim9_fails.vim, it causes leak reports
   endif
-  if has('float')
-    var float1: float = 3.4
-  endif
+  var float1: float = 3.4
   var Funky1: func
   var Funky2: func = function('len')
   var Party2: func = funcref('g:Test_syntax')
@@ -147,17 +145,15 @@
   &ts %= 4
   assert_equal(2, &ts)
 
-  if has('float')
-    var f100: float = 100.0
-    f100 /= 5
-    assert_equal(20.0, f100)
+  var f100: float = 100.0
+  f100 /= 5
+  assert_equal(20.0, f100)
 
-    var f200: float = 200.0
-    f200 /= 5.0
-    assert_equal(40.0, f200)
+  var f200: float = 200.0
+  f200 /= 5.0
+  assert_equal(40.0, f200)
 
-    v9.CheckDefFailure(['var nr: number = 200', 'nr /= 5.0'], 'E1012:')
-  endif
+  v9.CheckDefFailure(['var nr: number = 200', 'nr /= 5.0'], 'E1012:')
 
   lines =<< trim END
     &ts = 6
@@ -227,11 +223,9 @@
   g:inc_counter += 1
   assert_equal(2, g:inc_counter)
 
-  if has('float')
-    var f: float
-    f += 1
-    assert_equal(1.0, f)
-  endif
+  var f: float
+  f += 1
+  assert_equal(1.0, f)
 
   $SOME_ENV_VAR ..= 'more'
   assert_equal('somemore', $SOME_ENV_VAR)
@@ -250,20 +244,16 @@
 enddef
 
 def Test_float_and_number()
-  if !has('float')
-    MissingFeature float
-  else
-    var lines =<< trim END
-         var f: float
-         f += 2
-         f -= 1
-         assert_equal(1.0, f)
-         ++f
-         --f
-         assert_equal(1.0, f)
-    END
-    v9.CheckDefAndScriptSuccess(lines)
-  endif
+  var lines =<< trim END
+       var f: float
+       f += 2
+       f -= 1
+       assert_equal(1.0, f)
+       ++f
+       --f
+       assert_equal(1.0, f)
+  END
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 let g:someNumber = 43
@@ -1314,10 +1304,8 @@
   var thenumber: number
   assert_equal(0, thenumber)
 
-  if has('float')
-    var thefloat: float
-    assert_equal(0.0, thefloat)
-  endif
+  var thefloat: float
+  assert_equal(0.0, thefloat)
 
   var thestring: string
   assert_equal('', thestring)
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index dccd99b..fb21683 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -69,11 +69,9 @@
   assert_equal(2, abs(-2))
   assert_equal(3, abs(3))
   v9.CheckDefAndScriptFailure(['abs("text")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
-  if has('float')
-    assert_equal(0, abs(0))
-    assert_equal(2.0, abs(-2.0))
-    assert_equal(3.0, abs(3.0))
-  endif
+  assert_equal(0, abs(0))
+  assert_equal(2.0, abs(-2.0))
+  assert_equal(3.0, abs(3.0))
 enddef
 
 def Test_add()
@@ -1283,8 +1281,6 @@
 
 " Test for float functions argument type
 def Test_float_funcs_args()
-  CheckFeature float
-
   # acos()
   v9.CheckDefAndScriptFailure(['acos("a")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1'])
   assert_equal('1.570796', string(acos(0.0)))
@@ -4064,15 +4060,11 @@
 enddef
 
 def Test_str2float()
-  if !has('float')
-    CheckFeature float
-  else
-    str2float("1.00")->assert_equal(1.00)
-    str2float("2e-2")->assert_equal(0.02)
-    str2float('')->assert_equal(0.0)
+  str2float("1.00")->assert_equal(1.00)
+  str2float("2e-2")->assert_equal(0.02)
+  str2float('')->assert_equal(0.0)
 
-    v9.CheckDefAndScriptFailure(['str2float(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
-  endif
+  v9.CheckDefAndScriptFailure(['str2float(123)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1'])
 enddef
 
 def Test_str2list()
@@ -4585,9 +4577,7 @@
 enddef
 
 def Test_typename()
-  if has('float')
-    assert_equal('func([unknown], [unknown]): float', typename(function('pow')))
-  endif
+  assert_equal('func([unknown], [unknown]): float', typename(function('pow')))
   assert_equal('func(...): unknown', test_null_partial()->typename())
   assert_equal('list<unknown>', test_null_list()->typename())
   assert_equal('dict<unknown>', test_null_dict()->typename())
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 67cd909..d4a520f 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -309,9 +309,7 @@
   var localbool = true
   var localspec = v:none
   var localblob = 0z1234
-  if has('float')
-    var localfloat = 1.234
-  endif
+  var localfloat = 1.234
 enddef
 
 def Test_disassemble_push()
@@ -1742,13 +1740,11 @@
   anyres = g:number / 7
   anyres = g:number % 7
 
-  if has('float')
-    var fl = 3.0
-    var flres = fl + 7.0
-    flres = fl - 7.0
-    flres = fl * 7.0
-    flres = fl / 7.0
-  endif
+  var fl = 3.0
+  var flres = fl + 7.0
+  flres = fl - 7.0
+  flres = fl * 7.0
+  flres = fl / 7.0
 enddef
 
 def Test_disassemble_computing()
@@ -1783,24 +1779,22 @@
         'anyres = g:number % 7.*' ..
         '\d OPANY %.*',
         instr)
-  if has('float')
-    assert_match('Computing.*' ..
-        'var fl = 3.0.*' ..
-        '\d PUSHF 3.0.*' ..
-        '\d STORE $3.*' ..
-        'var flres = fl + 7.0.*' ..
-        '\d LOAD $3.*' ..
-        '\d PUSHF 7.0.*' ..
-        '\d OPFLOAT +.*' ..
-        '\d STORE $4.*' ..
-        'flres = fl - 7.0.*' ..
-        '\d OPFLOAT -.*' ..
-        'flres = fl \* 7.0.*' ..
-        '\d OPFLOAT \*.*' ..
-        'flres = fl / 7.0.*' ..
-        '\d OPFLOAT /.*',
-        instr)
-  endif
+  assert_match('Computing.*' ..
+      'var fl = 3.0.*' ..
+      '\d PUSHF 3.0.*' ..
+      '\d STORE $3.*' ..
+      'var flres = fl + 7.0.*' ..
+      '\d LOAD $3.*' ..
+      '\d PUSHF 7.0.*' ..
+      '\d OPFLOAT +.*' ..
+      '\d STORE $4.*' ..
+      'flres = fl - 7.0.*' ..
+      '\d OPFLOAT -.*' ..
+      'flres = fl \* 7.0.*' ..
+      '\d OPFLOAT \*.*' ..
+      'flres = fl / 7.0.*' ..
+      '\d OPFLOAT /.*',
+      instr)
 enddef
 
 def s:AddListBlob()
@@ -2178,19 +2172,17 @@
         ['77 isnot g:xx', 'COMPAREANY isnot'],
         ]
   var floatDecl = ''
-  if has('float')
-    cases->extend([
-        ['1.1 == aFloat', 'COMPAREFLOAT =='],
-        ['1.1 != aFloat', 'COMPAREFLOAT !='],
-        ['1.1 > aFloat', 'COMPAREFLOAT >'],
-        ['1.1 < aFloat', 'COMPAREFLOAT <'],
-        ['1.1 >= aFloat', 'COMPAREFLOAT >='],
-        ['1.1 <= aFloat', 'COMPAREFLOAT <='],
-        ['1.1 =~ aFloat', 'COMPAREFLOAT =\~'],
-        ['1.1 !~ aFloat', 'COMPAREFLOAT !\~'],
-        ])
-    floatDecl = 'var aFloat = 2.2'
-  endif
+  cases->extend([
+      ['1.1 == aFloat', 'COMPAREFLOAT =='],
+      ['1.1 != aFloat', 'COMPAREFLOAT !='],
+      ['1.1 > aFloat', 'COMPAREFLOAT >'],
+      ['1.1 < aFloat', 'COMPAREFLOAT <'],
+      ['1.1 >= aFloat', 'COMPAREFLOAT >='],
+      ['1.1 <= aFloat', 'COMPAREFLOAT <='],
+      ['1.1 =~ aFloat', 'COMPAREFLOAT =\~'],
+      ['1.1 !~ aFloat', 'COMPAREFLOAT !\~'],
+      ])
+  floatDecl = 'var aFloat = 2.2'
 
   var nr = 1
   for case in cases
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 9bb053f..44e221a 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -18,9 +18,7 @@
       assert_equal('one', 1 ?
                             'one' :
                             'two')
-      if has('float')
-        assert_equal('one', !!0.1 ? 'one' : 'two')
-      endif
+      assert_equal('one', !!0.1 ? 'one' : 'two')
       assert_equal('one', !!'x' ? 'one' : 'two')
       assert_equal('one', !!'x'
                             ? 'one'
@@ -33,9 +31,7 @@
 
       assert_equal('two', false ? 'one' : 'two')
       assert_equal('two', 0 ? 'one' : 'two')
-      if has('float')
-        assert_equal('two', !!0.0 ? 'one' : 'two')
-      endif
+      assert_equal('two', !!0.0 ? 'one' : 'two')
       assert_equal('two', !!'' ? 'one' : 'two')
       assert_equal('two', !!0z ? 'one' : 'two')
       assert_equal('two', !![] ? 'one' : 'two')
@@ -208,9 +204,7 @@
   call v9.CheckDefExecAndScriptFailure(["var x = true ? xxx : 'foo'"], ['E1001:', 'E121:'], 1)
   call v9.CheckDefExecAndScriptFailure(["var x = false ? 'foo' : xxx"], ['E1001:', 'E121:'], 1)
 
-  if has('float')
-    call v9.CheckDefAndScriptFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1)
-  endif
+  call v9.CheckDefAndScriptFailure(["var x = 0.1 ? 'one' : 'two'"], 'E805:', 1)
 
   " missing argument detected even when common type is used
   call v9.CheckDefAndScriptFailure([
@@ -227,18 +221,14 @@
       assert_equal('yes', 'yes' ?? 456)
       assert_equal([1], [1] ?? 456)
       assert_equal({one: 1}, {one: 1} ?? 456)
-      if has('float')
-        assert_equal(0.1, 0.1 ?? 456)
-      endif
+      assert_equal(0.1, 0.1 ?? 456)
 
       assert_equal(456, v:false ?? 456)
       assert_equal(456, 0 ?? 456)
       assert_equal(456, '' ?? 456)
       assert_equal(456, [] ?? 456)
       assert_equal(456, {} ?? 456)
-      if has('float')
-        assert_equal(456, 0.0 ?? 456)
-      endif
+      assert_equal(456, 0.0 ?? 456)
   END
   v9.CheckDefAndScriptSuccess(lines)
 
@@ -567,9 +557,7 @@
 let anint = 10
 let theone = 1
 let thefour = 4
-if has('float')
-  let afloat = 0.1
-endif
+let afloat = 0.1
 let astring = 'asdf'
 let ablob = 0z01ab
 let alist = [2, 3, 4]
@@ -605,20 +593,18 @@
       assert_equal(true, g:anint == 10)
       assert_equal(false, 61 == g:anint)
 
-      if has('float')
-        var ff = 0.3
-        assert_equal(true, ff == 0.3)
-        assert_equal(false, 0.4 == ff)
-        assert_equal(true, 0.1 == g:afloat)
-        assert_equal(false, g:afloat == 0.3)
+      var ff = 0.3
+      assert_equal(true, ff == 0.3)
+      assert_equal(false, 0.4 == ff)
+      assert_equal(true, 0.1 == g:afloat)
+      assert_equal(false, g:afloat == 0.3)
 
-        ff = 3.0
-        assert_equal(true, ff == 3)
-        assert_equal(true, 3 == ff)
-        ff = 3.1
-        assert_equal(false, ff == 3)
-        assert_equal(false, 3 == ff)
-      endif
+      ff = 3.0
+      assert_equal(true, ff == 3)
+      assert_equal(true, 3 == ff)
+      ff = 3.1
+      assert_equal(false, ff == 3)
+      assert_equal(false, 3 == ff)
 
       assert_equal(true, 'abc' == 'abc')
       assert_equal(false, 'xyz' == 'abc')
@@ -706,20 +692,18 @@
   v9.CheckScriptFailure(lines, 'E1030: Using a String as a Number: "3"')
   assert_true(g:notReached)
 
-  if has('float')
-    lines =<< trim END
-        vim9script
-        var n: any = 2.2
-        def Compare()
-          eval n == '3'
-          g:notReached = false
-        enddef
-        g:notReached = true
-        Compare()
-    END
-    v9.CheckScriptFailure(lines, 'E892: Using a String as a Float')
-    assert_true(g:notReached)
-  endif
+  lines =<< trim END
+      vim9script
+      var n: any = 2.2
+      def Compare()
+        eval n == '3'
+        g:notReached = false
+      enddef
+      g:notReached = true
+      Compare()
+  END
+  v9.CheckScriptFailure(lines, 'E892: Using a String as a Float')
+  assert_true(g:notReached)
 
   unlet g:notReached
 enddef
@@ -746,16 +730,14 @@
       assert_true(null != 123)
       assert_true(null != 0)
 
-      if has('float')
-        assert_false(12.3 == null)
-        assert_false(0.0 == null)
-        assert_false(null == 12.3)
-        assert_false(null == 0.0)
-        assert_true(12.3 != null)
-        assert_true(0.0 != null)
-        assert_true(null != 12.3)
-        assert_true(null != 0.0)
-      endif
+      assert_false(12.3 == null)
+      assert_false(0.0 == null)
+      assert_false(null == 12.3)
+      assert_false(null == 0.0)
+      assert_true(12.3 != null)
+      assert_true(0.0 != null)
+      assert_true(null != 12.3)
+      assert_true(null != 0.0)
 
       assert_true(test_null_blob() == v:null)
       assert_true(null_blob == null)
@@ -1077,20 +1059,18 @@
       assert_equal(false, g:anint != 10)
       assert_equal(true, 61 != g:anint)
 
-      if has('float')
-        var ff = 0.3
-        assert_equal(false, 0.3 != ff)
-        assert_equal(true, 0.4 != ff)
-        assert_equal(false, 0.1 != g:afloat)
-        assert_equal(true, g:afloat != 0.3)
+      var ff = 0.3
+      assert_equal(false, 0.3 != ff)
+      assert_equal(true, 0.4 != ff)
+      assert_equal(false, 0.1 != g:afloat)
+      assert_equal(true, g:afloat != 0.3)
 
-        ff = 3.0
-        assert_equal(false, ff != 3)
-        assert_equal(false, 3 != ff)
-        ff = 3.1
-        assert_equal(true, ff != 3)
-        assert_equal(true, 3 != ff)
-      endif
+      ff = 3.0
+      assert_equal(false, ff != 3)
+      assert_equal(false, 3 != ff)
+      ff = 3.1
+      assert_equal(true, ff != 3)
+      assert_equal(true, 3 != ff)
 
       assert_equal(false, 'abc' != 'abc')
       assert_equal(true, 'xyz' != 'abc')
@@ -1149,13 +1129,11 @@
       assert_false(nr2 > 2)
       assert_false(nr2
                         > 3)
-      if has('float')
-        var ff = 2.0
-        assert_true(ff > 0.0)
-        assert_true(ff > 1.0)
-        assert_false(ff > 2.0)
-        assert_false(ff > 3.0)
-      endif
+      var ff = 2.0
+      assert_true(ff > 0.0)
+      assert_true(ff > 1.0)
+      assert_false(ff > 2.0)
+      assert_false(ff > 3.0)
   END
   v9.CheckDefAndScriptSuccess(lines)
 enddef
@@ -1171,12 +1149,10 @@
       assert_true(nr2 >= 0)
       assert_true(nr2 >= 2)
       assert_false(nr2 >= 3)
-      if has('float')
-        var ff = 2.0
-        assert_true(ff >= 0.0)
-        assert_true(ff >= 2.0)
-        assert_false(ff >= 3.0)
-      endif
+      var ff = 2.0
+      assert_true(ff >= 0.0)
+      assert_true(ff >= 2.0)
+      assert_false(ff >= 3.0)
   END
   v9.CheckDefAndScriptSuccess(lines)
 enddef
@@ -1193,12 +1169,10 @@
       assert_false(nr2 < 0)
       assert_false(nr2 < 2)
       assert_true(nr2 < 3)
-      if has('float')
-        var ff = 2.0
-        assert_false(ff < 0.0)
-        assert_false(ff < 2.0)
-        assert_true(ff < 3.0)
-      endif
+      var ff = 2.0
+      assert_false(ff < 0.0)
+      assert_false(ff < 2.0)
+      assert_true(ff < 3.0)
   END
   v9.CheckDefAndScriptSuccess(lines)
 enddef
@@ -1217,13 +1191,11 @@
       assert_false(nr2 <= 1)
       assert_true(nr2 <= 2)
       assert_true(nr2 <= 3)
-      if has('float')
-        var ff = 2.0
-        assert_false(ff <= 0.0)
-        assert_false(ff <= 1.0)
-        assert_true(ff <= 2.0)
-        assert_true(ff <= 3.0)
-      endif
+      var ff = 2.0
+      assert_false(ff <= 0.0)
+      assert_false(ff <= 1.0)
+      assert_true(ff <= 2.0)
+      assert_true(ff <= 3.0)
   END
   v9.CheckDefAndScriptSuccess(lines)
 enddef
@@ -1456,10 +1428,8 @@
   call v9.CheckDefAndScriptFailure(["var x = v:none isnot v:null"], 'Cannot use "isnot" with special', 1)
   call v9.CheckDefAndScriptFailure(["var x = 123 is 123"], 'Cannot use "is" with number', 1)
   call v9.CheckDefAndScriptFailure(["var x = 123 isnot 123"], 'Cannot use "isnot" with number', 1)
-  if has('float')
-    call v9.CheckDefAndScriptFailure(["var x = 1.3 is 1.3"], 'Cannot use "is" with float', 1)
-    call v9.CheckDefAndScriptFailure(["var x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1)
-  endif
+  call v9.CheckDefAndScriptFailure(["var x = 1.3 is 1.3"], 'Cannot use "is" with float', 1)
+  call v9.CheckDefAndScriptFailure(["var x = 1.3 isnot 1.3"], 'Cannot use "isnot" with float', 1)
 
   call v9.CheckDefAndScriptFailure(["var x = 0za1 > 0z34"], 'Cannot compare blob with blob', 1)
   call v9.CheckDefAndScriptFailure(["var x = 0za1 >= 0z34"], 'Cannot compare blob with blob', 1)
@@ -1518,9 +1488,7 @@
       assert_equal('afalse', 'a' .. false)
       assert_equal('anull', 'a' .. v:null)
       assert_equal('av:none', 'a' .. v:none)
-      if has('float')
-        assert_equal('a0.123', 'a' .. 0.123)
-      endif
+      assert_equal('a0.123', 'a' .. 0.123)
 
       assert_equal(3, 1 + [2, 3, 4][0])
       assert_equal(5, 2 + {key: 3}['key'])
@@ -1719,31 +1687,27 @@
 enddef
 
 def Test_expr6_float()
-  if !has('float')
-    MissingFeature 'float'
-  else
-    var lines =<< trim END
-        assert_equal(66.0, 60.0 + 6.0)
-        assert_equal(66.0, 60.0 + 6)
-        assert_equal(66.0, 60 +
-                             6.0)
-        assert_equal(5.1, g:afloat
-                            + 5)
-        assert_equal(8.1, 8 + g:afloat)
-        assert_equal(10.1, g:anint + g:afloat)
-        assert_equal(10.1, g:afloat + g:anint)
+  var lines =<< trim END
+      assert_equal(66.0, 60.0 + 6.0)
+      assert_equal(66.0, 60.0 + 6)
+      assert_equal(66.0, 60 +
+                           6.0)
+      assert_equal(5.1, g:afloat
+                          + 5)
+      assert_equal(8.1, 8 + g:afloat)
+      assert_equal(10.1, g:anint + g:afloat)
+      assert_equal(10.1, g:afloat + g:anint)
 
-        assert_equal(54.0, 60.0 - 6.0)
-        assert_equal(54.0, 60.0
-                                - 6)
-        assert_equal(54.0, 60 - 6.0)
-        assert_equal(-4.9, g:afloat - 5)
-        assert_equal(7.9, 8 - g:afloat)
-        assert_equal(9.9, g:anint - g:afloat)
-        assert_equal(-9.9, g:afloat - g:anint)
-    END
-    v9.CheckDefAndScriptSuccess(lines)
-  endif
+      assert_equal(54.0, 60.0 - 6.0)
+      assert_equal(54.0, 60.0
+                              - 6)
+      assert_equal(54.0, 60 - 6.0)
+      assert_equal(-4.9, g:afloat - 5)
+      assert_equal(7.9, 8 - g:afloat)
+      assert_equal(9.9, g:anint - g:afloat)
+      assert_equal(-9.9, g:afloat - g:anint)
+  END
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 func Test_expr6_fails()
@@ -1852,14 +1816,12 @@
       var y = [3]
       assert_equal(5, x[0] + y[0])
       assert_equal(6, x[0] * y[0])
-      if has('float')
-        var xf = [2.0]
-        var yf = [3.0]
-        assert_equal(5.0, xf[0]
-                            + yf[0])
-        assert_equal(6.0, xf[0]
-                            * yf[0])
-      endif
+      var xf = [2.0]
+      var yf = [3.0]
+      assert_equal(5.0, xf[0]
+                          + yf[0])
+      assert_equal(6.0, xf[0]
+                          * yf[0])
   END
   v9.CheckDefAndScriptSuccess(lines)
 
@@ -1874,13 +1836,11 @@
   v9.CheckDefExecFailure(['echo 123 / g:zero'], 'E1154: Divide by zero')
   v9.CheckDefExecFailure(['echo 123 % g:zero'], 'E1154: Divide by zero')
 
-  if has('float')
-    v9.CheckDefExecAndScriptFailure([
-          'g:one = 1.0',
-          'g:two = 2.0',
-          'echo g:one % g:two',
-          ], 'E804', 3)
-  endif
+  v9.CheckDefExecAndScriptFailure([
+        'g:one = 1.0',
+        'g:two = 2.0',
+        'echo g:one % g:two',
+        ], 'E804', 3)
 
   lines =<< trim END
     var n = 0
@@ -1948,36 +1908,32 @@
 enddef
 
 def Test_expr7_float()
-  if !has('float')
-    MissingFeature 'float'
-  else
-    var lines =<< trim END
-        assert_equal(36.0, 6.0 * 6)
-        assert_equal(36.0, 6 *
-                               6.0)
-        assert_equal(36.0, 6.0 * 6.0)
-        assert_equal(1.0, g:afloat * g:anint)
+  var lines =<< trim END
+      assert_equal(36.0, 6.0 * 6)
+      assert_equal(36.0, 6 *
+                             6.0)
+      assert_equal(36.0, 6.0 * 6.0)
+      assert_equal(1.0, g:afloat * g:anint)
 
-        assert_equal(10.0, 60 / 6.0)
-        assert_equal(10.0, 60.0 /
-                            6)
-        assert_equal(10.0, 60.0 / 6.0)
-        assert_equal(0.01, g:afloat / g:anint)
+      assert_equal(10.0, 60 / 6.0)
+      assert_equal(10.0, 60.0 /
+                          6)
+      assert_equal(10.0, 60.0 / 6.0)
+      assert_equal(0.01, g:afloat / g:anint)
 
-        assert_equal(4.0, 6.0 * 4 / 6)
-        assert_equal(4.0, 6 *
-                            4.0 /
-                            6)
-        assert_equal(4.0, 6 * 4 / 6.0)
-        assert_equal(4.0, 6.0 * 4.0 / 6)
-        assert_equal(4.0, 6 * 4.0 / 6.0)
-        assert_equal(4.0, 6.0 * 4 / 6.0)
-        assert_equal(4.0, 6.0 * 4.0 / 6.0)
+      assert_equal(4.0, 6.0 * 4 / 6)
+      assert_equal(4.0, 6 *
+                          4.0 /
+                          6)
+      assert_equal(4.0, 6 * 4 / 6.0)
+      assert_equal(4.0, 6.0 * 4.0 / 6)
+      assert_equal(4.0, 6 * 4.0 / 6.0)
+      assert_equal(4.0, 6.0 * 4 / 6.0)
+      assert_equal(4.0, 6.0 * 4.0 / 6.0)
 
-        assert_equal(4.0, 6.0 * 4.0 / 6.0)
-    END
-    v9.CheckDefAndScriptSuccess(lines)
-  endif
+      assert_equal(4.0, 6.0 * 4.0 / 6.0)
+  END
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 func Test_expr7_fails()
@@ -2013,9 +1969,7 @@
   call v9.CheckDefAndScriptFailure(["var x = {one: 1} % {two: 2}"], ['E1035:', 'E728:'], 1)
 
   call v9.CheckDefAndScriptFailure(["var x = 0xff[1]"], ['E1107:', 'E1062:'], 1)
-  if has('float')
-    call v9.CheckDefAndScriptFailure(["var x = 0.7[1]"], ['E1107:', 'E806:'], 1)
-  endif
+  call v9.CheckDefAndScriptFailure(["var x = 0.7[1]"], ['E1107:', 'E806:'], 1)
 
   for op in ['*', '/', '%']
     let lines = ['var x = 1', op .. '2', '# comment']
@@ -2025,16 +1979,14 @@
 endfunc
 
 func Test_expr7_float_fails()
-  CheckFeature float
   call v9.CheckDefAndScriptFailure(["var x = 1.0 % 2"], ['E1035:', 'E804:'], 1)
 endfunc
 
 " define here to use old style parsing
-if has('float')
-  let g:float_zero = 0.0
-  let g:float_neg = -9.8
-  let g:float_big = 9.9e99
-endif
+let g:float_zero = 0.0
+let g:float_neg = -9.8
+let g:float_big = 9.9e99
+
 let g:blob_empty = 0z
 let g:blob_one = 0z01
 let g:blob_long = 0z0102.0304
@@ -2099,17 +2051,13 @@
 
 def Test_expr9_float()
   # float constant
-  if !has('float')
-    MissingFeature 'float'
-  else
-    var lines =<< trim END
-        assert_equal(g:float_zero, .0)
-        assert_equal(g:float_zero, 0.0)
-        assert_equal(g:float_neg, -9.8)
-        assert_equal(g:float_big, 9.9e99)
-    END
-    v9.CheckDefAndScriptSuccess(lines)
-  endif
+  var lines =<< trim END
+      assert_equal(g:float_zero, .0)
+      assert_equal(g:float_zero, 0.0)
+      assert_equal(g:float_neg, -9.8)
+      assert_equal(g:float_big, 9.9e99)
+  END
+  v9.CheckDefAndScriptSuccess(lines)
 enddef
 
 def Test_expr9_blob()
@@ -2797,11 +2745,9 @@
       assert_equal('numberexpr', dkeys[12])
       assert_equal('number', dkeys[34])
       assert_equal('bool', dkeys[true])
-      if has('float')
-        dkeys = {[1.2]: 'floatexpr', [3.4]: 'float'}
-        assert_equal('floatexpr', dkeys[1.2])
-        assert_equal('float', dkeys[3.4])
-      endif
+      dkeys = {[1.2]: 'floatexpr', [3.4]: 'float'}
+      assert_equal('floatexpr', dkeys[1.2])
+      assert_equal('float', dkeys[3.4])
 
       # automatic conversion from number to string
       var n = 123
diff --git a/src/testdir/test_vimscript.vim b/src/testdir/test_vimscript.vim
index 07dc59d..641ef73 100644
--- a/src/testdir/test_vimscript.vim
+++ b/src/testdir/test_vimscript.vim
@@ -6490,9 +6490,7 @@
     call assert_equal(2, type(function("tr", [8])))
     call assert_equal(3, type([]))
     call assert_equal(4, type({}))
-    if has('float')
-      call assert_equal(5, type(0.0))
-    endif
+    call assert_equal(5, type(0.0))
     call assert_equal(6, type(v:false))
     call assert_equal(6, type(v:true))
     call assert_equal(7, type(v:none))
@@ -6505,9 +6503,7 @@
     call assert_equal(v:t_func, type(function("tr", [8])))
     call assert_equal(v:t_list, type([]))
     call assert_equal(v:t_dict, type({}))
-    if has('float')
-      call assert_equal(v:t_float, type(0.0))
-    endif
+    call assert_equal(v:t_float, type(0.0))
     call assert_equal(v:t_bool, type(v:false))
     call assert_equal(v:t_bool, type(v:true))
     call assert_equal(v:t_none, type(v:none))
@@ -6551,11 +6547,9 @@
     call assert_true(v:none == 0)
     call assert_false(v:none == 1)
     call assert_false(v:none != 0)
-    if has('float')
-      call assert_true(v:null == 0.0)
-      call assert_false(v:null == 0.1)
-      call assert_false(v:null != 0.0)
-    endif
+    call assert_true(v:null == 0.0)
+    call assert_false(v:null == 0.1)
+    call assert_false(v:null != 0.0)
 
     call assert_true(v:false is v:false)
     call assert_true(v:true is v:true)
@@ -6670,16 +6664,14 @@
 		     \ "'foo bar'"], l)
 
     " Float
-    if has('float')
-	let a = -1.2e0
-	redir => result
-	echo a
-	echo string(a)
-	redir END
-	let l = split(result, "\n")
-	call assert_equal(["-1.2",
-			 \ "-1.2"], l)
-    endif
+    let a = -1.2e0
+    redir => result
+    echo a
+    echo string(a)
+    redir END
+    let l = split(result, "\n")
+    call assert_equal(["-1.2",
+                     \ "-1.2"], l)
 
     " Funcref
     redir => result
@@ -6816,10 +6808,8 @@
     call assert_equal(-9223372036854775807, -1 / 0)
     call assert_equal(-9223372036854775807 - 1,  0 / 0)
 
-    if has('float')
-      call assert_equal( 0x7FFFffffFFFFffff, float2nr( 1.0e150))
-      call assert_equal(-0x7FFFffffFFFFffff, float2nr(-1.0e150))
-    endif
+    call assert_equal( 0x7FFFffffFFFFffff, float2nr( 1.0e150))
+    call assert_equal(-0x7FFFffffFFFFffff, float2nr(-1.0e150))
 
     let rng = range(0xFFFFffff, 0x100000001)
     call assert_equal([0xFFFFffff, 0x100000000, 0x100000001], rng)
@@ -6921,10 +6911,8 @@
     call assert_equal(0, and(127, 128))
     call assert_fails("call and([], 1)", 'E745:')
     call assert_fails("call and({}, 1)", 'E728:')
-    if has('float')
-      call assert_fails("call and(1.0, 1)", 'E805:')
-      call assert_fails("call and(1, 1.0)", 'E805:')
-    endif
+    call assert_fails("call and(1.0, 1)", 'E805:')
+    call assert_fails("call and(1, 1.0)", 'E805:')
     call assert_fails("call and(1, [])", 'E745:')
     call assert_fails("call and(1, {})", 'E728:')
     " or
@@ -6934,10 +6922,8 @@
     call assert_equal(123, or(0, 123))
     call assert_fails("call or([], 1)", 'E745:')
     call assert_fails("call or({}, 1)", 'E728:')
-    if has('float')
-      call assert_fails("call or(1.0, 1)", 'E805:')
-      call assert_fails("call or(1, 1.0)", 'E805:')
-    endif
+    call assert_fails("call or(1.0, 1)", 'E805:')
+    call assert_fails("call or(1, 1.0)", 'E805:')
     call assert_fails("call or(1, [])", 'E745:')
     call assert_fails("call or(1, {})", 'E728:')
     " xor
@@ -6945,10 +6931,8 @@
     call assert_equal(111, xor(127, 16))
     eval 127->xor(16)->assert_equal(111)
     call assert_equal(255, xor(127, 128))
-    if has('float')
-      call assert_fails("call xor(1.0, 1)", 'E805:')
-      call assert_fails("call xor(1, 1.0)", 'E805:')
-    endif
+    call assert_fails("call xor(1.0, 1)", 'E805:')
+    call assert_fails("call xor(1, 1.0)", 'E805:')
     call assert_fails("call xor([], 1)", 'E745:')
     call assert_fails("call xor({}, 1)", 'E728:')
     call assert_fails("call xor(1, [])", 'E745:')
@@ -6958,9 +6942,7 @@
     eval 127->invert()->and(65535)->assert_equal(65408)
     call assert_equal(65519, and(invert(16), 65535))
     call assert_equal(65407, and(invert(128), 65535))
-    if has('float')
-      call assert_fails("call invert(1.0)", 'E805:')
-    endif
+    call assert_fails("call invert(1.0)", 'E805:')
     call assert_fails("call invert([])", 'E745:')
     call assert_fails("call invert({})", 'E728:')
 endfunc
@@ -7039,38 +7021,36 @@
     let x += 1
     call assert_equal(1, x)
 
-    if has('float')
-      " Test for float
-      let x -= 1.5
-      call assert_equal(-0.5, x)
-      let x = 0.5
-      let x += 4.5
-      call assert_equal(5.0, x)
-      let x -= 1.5
-      call assert_equal(3.5, x)
-      let x *= 3.0
-      call assert_equal(10.5, x)
-      let x /= 2.5
-      call assert_equal(4.2, x)
-      call assert_fails('let x %= 0.5', 'E734:')
-      call assert_fails('let x .= "f"', 'E734:')
-      let x = !3.14
-      call assert_equal(0.0, x)
+    " Test for float
+    let x -= 1.5
+    call assert_equal(-0.5, x)
+    let x = 0.5
+    let x += 4.5
+    call assert_equal(5.0, x)
+    let x -= 1.5
+    call assert_equal(3.5, x)
+    let x *= 3.0
+    call assert_equal(10.5, x)
+    let x /= 2.5
+    call assert_equal(4.2, x)
+    call assert_fails('let x %= 0.5', 'E734:')
+    call assert_fails('let x .= "f"', 'E734:')
+    let x = !3.14
+    call assert_equal(0.0, x)
 
-      " integer and float operations
-      let x = 1
-      let x *= 2.1
-      call assert_equal(2.1, x)
-      let x = 1
-      let x /= 0.25
-      call assert_equal(4.0, x)
-      let x = 1
-      call assert_fails('let x %= 0.25', 'E734:')
-      let x = 1
-      call assert_fails('let x .= 0.25', 'E734:')
-      let x = 1.0
-      call assert_fails('let x += [1.1]', 'E734:')
-    endif
+    " integer and float operations
+    let x = 1
+    let x *= 2.1
+    call assert_equal(2.1, x)
+    let x = 1
+    let x /= 0.25
+    call assert_equal(4.0, x)
+    let x = 1
+    call assert_fails('let x %= 0.25', 'E734:')
+    let x = 1
+    call assert_fails('let x .= 0.25', 'E734:')
+    let x = 1.0
+    call assert_fails('let x += [1.1]', 'E734:')
 
     " Test for environment variable
     let $FOO = 1
@@ -7142,9 +7122,7 @@
     call assert_equal(0, test_refcount({}))
     call assert_equal(0, test_refcount(0zff))
     call assert_equal(0, test_refcount({-> line('.')}))
-    if has('float')
-        call assert_equal(-1, test_refcount(0.1))
-    endif
+    call assert_equal(-1, test_refcount(0.1))
     if has('job')
         call assert_equal(0, test_refcount(job_start([&shell, &shellcmdflag, 'echo .'])))
     endif
@@ -7156,10 +7134,8 @@
     call assert_equal(-1, test_refcount(x))
     let x = v:true
     call assert_equal(-1, test_refcount(x))
-    if has('float')
-        let x = 0.1
-        call assert_equal(-1, test_refcount(x))
-    endif
+    let x = 0.1
+    call assert_equal(-1, test_refcount(x))
 
     " Check refcount
     let x = []
@@ -7377,16 +7353,14 @@
 
 " Test for errors in converting to float from various types         {{{1
 func Test_float_conversion_errors()
-  if has('float')
-    call assert_fails('let x = 4.0 % 2.0', 'E804:')
-    call assert_fails('echo 1.1[0]', 'E806:')
-    call assert_fails('echo sort([function("min"), 1], "f")', 'E891:')
-    call assert_fails('echo 3.2 == "vim"', 'E892:')
-    call assert_fails('echo sort([[], 1], "f")', 'E893:')
-    call assert_fails('echo sort([{}, 1], "f")', 'E894:')
-    call assert_fails('echo 3.2 == v:true', 'E362:')
-    call assert_fails('echo 3.2 == v:none', 'E907:')
-  endif
+  call assert_fails('let x = 4.0 % 2.0', 'E804:')
+  call assert_fails('echo 1.1[0]', 'E806:')
+  call assert_fails('echo sort([function("min"), 1], "f")', 'E891:')
+  call assert_fails('echo 3.2 == "vim"', 'E892:')
+  call assert_fails('echo sort([[], 1], "f")', 'E893:')
+  call assert_fails('echo sort([{}, 1], "f")', 'E894:')
+  call assert_fails('echo 3.2 == v:true', 'E362:')
+  call assert_fails('echo 3.2 == v:none', 'E907:')
 endfunc
 
 " invalid function names               {{{1