Jump to content

Test integerness: Difference between revisions

→‎{{header|Ruby}}: Added testcases conform suggested improvements.
(→‎{{header|Haskell}}: Added Haskell solution)
(→‎{{header|Ruby}}: Added testcases conform suggested improvements.)
Line 1,306:
 
=={{header|Ruby}}==
 
{{improve|Ruby|This method appears to support arbitrarily large floats, as well as special float values like NaN and infinity, but doesn't demonstrate it. Some test-cases should probably be added. (See the recommended test-cases in the task description.)}}
 
Testing for integerness of floats, rationals and complex numbers:
Line 1,314 ⟶ 1,312:
def integer?
self == self.to_i rescue false
end
end
 
# Demo
ar = [225.0000000, 224.5999999, 25.000100, -2.1e120, # -5e-2 floats,
2.to_rFloat::NAN, 2.5.to_rFloat::INFINITY, # 2 rationals
2.to_c2r, 2+0.5i] 5r, # 2 complex numbersrationals
2+0i, 2 + 0.0i, 5-5i]
 
ar.each{|num| puts "#{num} integer? #{num.integer?}" }
</lang>
{{out}}
<pre>
225.0 integer? true
224.5999999 integer? false
25.0001 integer? false
-2.1e+120 integer? true
-0.05 integer? false
NaN integer? false
Infinity integer? false
2/1 integer? true
5/2 integer? false
2+0i integer? true
2+0.5i0i integer? false
5-5i integer? false
</pre>
 
Ruby considers 2+0.0i to be inexact and raises an exception when the to_i method attempts to convert it to an integer. 2+0i is exact and converts to integer.
 
=={{header|Tcl}}==
1,149

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.