1

我需要创建一个主要是度量形式的客户模型。

它将记录有关用户的一些一般信息(姓名、年龄、性别等)和许多测量值(身高、体重、颈围、腰围等)。

该应用程序面向国际用户,因此有些人更喜欢使用厘米/公斤,其他人更喜欢使用英寸/磅。

我认为最好的方法是将所有数据以一致的格式存储在数据库中(例如公制)并在控制器端转换所有数据。

是否有规范的方式(或现有的 gem)在 rails 中获得它?如果不是,我会在模型中创建一个 preferred_measure_type 字段,然后在用户首选项中呈现所有视图。

另外我听说避免浮点数和小数并将数据存储为整数(在我的场景中为毫米和克)是明智的,然后在应用程序端进行所有转换。这是个好建议吗?

谢谢

4

1 回答 1

1

最好以规范单位存储数据,然后进行转换以供显示。使用最小的度量来捕获您需要的详细信息,而不会溢出列的容量。例如,毫米可能适合衬衫尺寸,但可能不足以测量高速公路。

至于浮点数,这些都是有问题的,主要是因为舍入问题。在处理货币时,即使是微小的差异也会引起问题。2.00 美元加上 2.00 美元应始终等于 4.00 美元,而不是 3.9999917237 美元,这可能会无意中四舍五入为 3.99 美元,从而“丢失”一分钱。

在不需要这种精度和一致性的地方,浮点数很好。要记住的是,浮点数始终是您给它的任何值的近似值,并且随着数字变大,精度会降低。也就是说,float十亿中的a无法准确反映千分之一的变化,没有足够的精度来表示它。

因此,在可能的情况下,使用固定位置系统,例如使用特定单元。必要时,使用浮点值,但始终确保将它们正确舍入以进行显示,并记住它们始终是近似值而不是精确值。

于 2012-12-05T15:36:25.620 回答