Ruby will always try to remain in the same data type as its operands. For example, if the integers 2 and 3 are added in Ruby, the result will also be an integer.
irb
(
main
):
001
:
0
>
2
+
3
=>
5
Likewise, when adding two floats, the result will also be a float.
irb
(
main
):
002
:
0
>
2
.
0
+
3
.
0
=>
5
.
0
When Ruby encounters two operands of different data types, it will convert them to match where possible.
irb
(
main
):
003
:
0
>
2
+
3
.
0
=>
5
.
0
The issue of dividing integers like 5 / 2 can finally be resolved. We are able to force Ruby to convert integer expressions into float expressions. Simply throw a float into the mix.
irb
(
main
):
004
:
0
>
1
.
0
*
5
/
2
=>
2
.
5
Of course, it is sometimes impossible to convert the data types to
match. In this case, Ruby will output a TypeError
.
irb
(
main
):
005
:
0
>
x
=
1
+
"hello"
TypeError
:
String
can
't be coerced into Fixnum
from (irb):4:in '
+
'
from
(
irb
):
4
18.226.104.27