Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 国际计量单位和轨道模型_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails 国际计量单位和轨道模型

Ruby on rails 国际计量单位和轨道模型,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我需要创建一个客户模型,它主要是一个度量形式 它将记录一些关于用户的一般信息(姓名、年龄、性别等)和许多度量(身高、体重、颈围、腰围等) 该应用程序面向国际用户,因此一些用户更喜欢使用厘米/千克,另一些用户更喜欢使用英寸/磅 我认为最好的方法是在数据库中以一致的格式存储所有数据(例如公制),并在控制器端转换所有数据 在rails中是否有一种规范的方法(或现有的gem)来获得此功能?如果没有,我会在模型中创建一个preferred\u measure\u type字段,然后在用户首选项中呈现所有视

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

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

该应用程序面向国际用户,因此一些用户更喜欢使用厘米/千克,另一些用户更喜欢使用英寸/磅

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

在rails中是否有一种规范的方法(或现有的gem)来获得此功能?如果没有,我会在模型中创建一个preferred\u measure\u type字段,然后在用户首选项中呈现所有视图

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


谢谢

最好以标准单位存储数据,然后进行转换以显示。使用能够捕获所需细节的最小度量值,而不会使列的容量溢出。例如,毫米可能适合衬衫尺寸,但可能不适合测量公路

至于浮动,这些问题主要是因为舍入问题。在处理货币问题时,即使是微小的差异也会引起问题$2.00美元加2.00美元应始终等于4.00美元,而不是3.999917237美元,这可能会无意中四舍五入到3.99美元,留下一便士“丢失”

如果不需要这样的精度和一致性,则可以使用浮动。需要记住的是,浮点数始终是您给定的任何值的近似值,并且精度随着数字的增大而降低。也就是说,数十亿的
浮点值
不能准确地反映千分之一的变化,没有足够的精度来表示它


因此,在可能的情况下,使用固定地点系统,例如使用特定的装置。必要时,请使用浮点值,但务必确保在显示时正确舍入这些值,并记住它们始终是近似值,从不精确。

最好以规范单位存储数据,然后进行转换以用于显示。使用能够捕获所需细节的最小度量值,而不会使列的容量溢出。例如,毫米可能适合衬衫尺寸,但可能不适合测量公路

至于浮动,这些问题主要是因为舍入问题。在处理货币问题时,即使是微小的差异也会引起问题$2.00美元加2.00美元应始终等于4.00美元,而不是3.999917237美元,这可能会无意中四舍五入到3.99美元,留下一便士“丢失”

如果不需要这样的精度和一致性,则可以使用浮动。需要记住的是,浮点数始终是您给定的任何值的近似值,并且精度随着数字的增大而降低。也就是说,数十亿的
浮点值
不能准确地反映千分之一的变化,没有足够的精度来表示它


因此,在可能的情况下,使用固定地点系统,例如使用特定的装置。必要时,使用浮点值,但始终确保将这些值适当舍入以显示,并记住它们始终是近似值,从不精确。

我在这里需要的精度是最小的(如果不是无关的话),因为我的应用程序将生成一个定制图表。我用整数表示千克和毫米。谢谢你详尽的解释。我在这里需要的精度是最小的(如果不是无关紧要的话),因为我的应用程序将生成一个定制图表。我用整数表示千克和毫米。谢谢你详尽的解释。