【问题标题】:Storing currencies with Coldfusion Orm使用 Coldfusion Orm 存储货币
【发布时间】:2013-12-10 08:39:57
【问题描述】:

我需要在存储货币(美元和美分)的 CF Orm 实体中创建一个属性。例如:100.99 或 1.30 等。我传统上使用小数来存储货币,因为您可以关注小数点的数量,但是小数没有 ORM 属性类型,只有浮点数。我尝试设置 scale=2,但是(例如)1.30 被存储为 1.3,或者 5.00 被存储为 5。

谁能建议使用 CF ORM 处理货币(有 2 位小数)的最佳方式?

非常感谢

【问题讨论】:

    标签: orm coldfusion cfml


    【解决方案1】:

    Bob Silverberg 有一篇关于 ColdFusion ORM 数据类型“CF9 ORM - Experimenting with type vs ormtype”的精彩博客文章。

    我个人更喜欢将货币存储为其基本单位的整数,例如130 美分,1.30 美元,然后在演示时处理小数位。在处理浮点值的计算时,它还有助于解决可能的舍入错误。

    【讨论】:

    • 真是个好主意。我总是以字节而不是 KB 或 MB 来存储文件大小。从未想过对货币采取同样的方法。
    【解决方案2】:

    根据文档,有一个 big_decimal ormtype。并且不要忘记有sqltype 属性以及ormtype 属性。请参阅文档:“Map the properties”。 sqltype(以及scaleprecision)可以让您适当地设置DB 列。

    也就是说,这意味着 CF(任意数量的小数位)和 DB(您可以将其强制为 2DP)之间存在脱节,这有点废话。我不知道这里是否有自动截断的方法...您可能必须创建一个 setter() 方法来处理它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2012-06-10
      • 2017-11-21
      • 1970-01-01
      • 2015-01-12
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多