📜  红宝石 |浮点类 -@ 值(1)

📅  最后修改于: 2023-12-03 15:11:36.543000             🧑  作者: Mango

红宝石 | 浮点类 -@ 值

在 Ruby 编程语言中,浮点类型是一种用于存储小数的数据类型。 浮点数是有小数点的数字,例如 3.14 或 1.618。 在 Ruby 中,浮点数默认类型是 Float 类型。

创建浮点数据

我们可以直接将一个数值转成浮点类型,或者指定浮点数值的方式来创建一个浮点数据。

# 直接将数值转成浮点类型
a = 3
b = 3.0

puts a.class   # => Integer
puts b.class   # => Float

# 使用 .to_f 方法将整数转成浮点类型
c = 4.to_f

puts c.class   # => Float

# 直接指定浮点数创建浮点数据
d = 1.123

puts d.class   # => Float
浮点数算术运算

浮点数据类型支持常见的算术运算符,例如 +, -, *, /等。

# 加法
puts 1.0 + 2.0   # => 3.0

# 减法
puts 1.0 - 0.9   # => 0.1

# 乘法
puts 1.5 * 2.0   # => 3.0

# 除法
puts 1.0 / 2.0   # => 0.5
浮点数精度问题

由于计算机内部表示小数时采用的是二进制,而不是十进制,因此会产生浮点数精度问题。这种问题被称为 IEEE 754 标准规定的浮点数陷阱。

puts 1.1 - 1.0   # => 0.10000000000000009

在比较浮点数时,为了避免精度问题,一般使用浮点数的差值,和一个非常小的值进行比较。

a = 1.1
b = 1.0 + 0.1

puts (a - b).abs < 1e-10  # => true
方法调用

浮点数值内置了许多有用的方法,我们可以通过 . 操作符调用这些方法。

x = 3.1415926

# 四舍五入取整
puts x.round(2)   # => 3.14

# 向上取整
puts x.ceil   # => 4

# 向下取整
puts x.floor  # => 3

# 转成科学计数法字符串
puts x.to_s('E')  # => "3.1415926E+00"
总结

在 Ruby 中,浮点类是用于存储小数的一种数据类型,它支持常见的算术运算符和许多有用的方法。但由于浮点数精度问题,我们需要特别小心。