【发布时间】:2020-04-01 11:57:33
【问题描述】:
在 Ruby 中,Float::INFINITY.to_s 产生 "Infinity" 和 "Infinity".to_f 产生 0.0:
irb(main):001:0> Float::INFINITY.to_s
=> "Infinity"
irb(main):002:0> "Infinity".to_f
=> 0.0
为什么会这样?为什么对称性被破坏了?在人类的编程语言中,我希望第二条语句的结果是Float::INFINITY。有什么方法可以使用 Ruby 将字符串转换为 Float::INFINITY 或 -Float::INFINITY?
顺便说一句。可能相关:to_json 在 Rails 中的行为也令人困惑。我希望它会像 ActiveModel::Serializer#as_json 那样筹集资金。
irb(main):001:0> {a: Float::INFINITY}.to_json
=> "{\"a\":null}"
【问题讨论】:
-
[1,2,3].to_s.to_a也不起作用。 -
这是一个有效点
标签: ruby types floating-point numbers