我使用 Rails 为 javascript 图表库(High Charts)生成 JSON。有几个地方我使用整数算术来计算条形图中的百分比,如下所示(简化示例):
def to_json
data.map{|numerator, denominator| numerator * 100 / denominator }
end
该服务器已经运行了好几年没有问题,但就在最近几周,它偶尔会开始失败,因为它会生成一个Rational
数字而不是 a Fixnum
(例如,2700/50
而不是54
)。这是因为浏览器中的 JSON 解析器不理解有理数。
修复很容易(调用to_i
或round
结果),但我很困惑为什么这会在 4 年后突然开始发生,以及为什么它只发生在我的网络农场的单个服务器上的一些乘客实例上。网络机器是相同的(据我所知)。
我的四部分问题:
- 有没有更惯用的方法来计算 Ruby 中的百分比?
- 当 Ruby 生成一个有理数而不是一个固定数时,规则是什么?
- 为什么这突然开始发生?
- 为什么它只会发生在我的 Rails 服务器的某些实例上?
版本详情:
- 红宝石 2.2.2
- 导轨 3.2.22
- 乘客 5.0.21
- Ubuntu 12.04.5 LTS