一尘不染

价格字段的字符串,小数或浮点数据类型?

sql

我有一个价格字段/列(例如15.50 USD),我想知道Rails数据类型应该是字符串,十进制还是浮点数?


阅读 142

收藏
2021-03-17

共1个答案

一尘不染

此参数始终有两个方面-小数和整数。整数的支持者认为,十进制可能不正确(进行转换时),并且BigDecimal实现包含错误,有时甚至存在段错误。

对于我自己的项目,我还选择了整数,将其包装在自定义容器中,将美分转换为“实际”金额,然后再转换回。乍一看,它看起来很不错,一段时间后变得非常麻烦-
跟踪您处理美分,格式化字符串等时的情况。

然后我恢复为小数-始终保持相同的格式,如果需要,我可以轻松地将金额转换为美分,我可以直接使用不同的舍入算法。我对小数更满意。

为了解决小数点不正确的问题-进行谷歌搜索时,您可能会注意到大多数错误都与将小数点转换为浮点数有关:漂浮。那是在处理小数时必须记住的最重要的一件事-
您不希望因转换而失去准确性。哦,我在广泛使用BigDecimal时从未真正遇到过ruby 1.8.7、1.8.7和1.9.1的错误。

2021-03-17