我遇到了困难并且非常不愿意走哪条路,如果有更好的方法可以做到这一点,我有一个通配符输入 - 如果你可以这么称呼它 - 可能有这些类型的输入
- +0.77
- +0.5%
- -0.51%
平面值始终为正值,百分比值也可以是,存储这些值的最佳做法是什么?作为字符串或作为 2 列,一列具有值,另一列用于值类型的 bool?我很困惑,因为如果我选择最简单的路径,在某些情况下我会遇到另一个问题,我需要将这些值乘以一个整数并考虑trim($value, '%')
,然后检查它是否有将它添加到结果中
这可能看起来有点矫枉过正,但我肯定会在这里寻找对象。两个类别,一个以绝对值偏移,另一个以百分比值偏移。定义一个工厂方法来解析输入字符串并生成任一类。然后,让这两个类扩展一个公共接口,该接口将包含一个类似“getAjustedValue(initialValue):ajustedValue”的方法。这将使这些调整值的使用更容易和更清晰。
OP评论后更新
至于数据库中的存储,我会将两种类型的调整存储在不同的列中。它使编写计算调整值的 SELECT 语句变得非常容易,如: SELECT (original_value * ajustement_ratio + ajustement_absolute) as adjusted_value FROM ...
. 显然,我希望 ajustements 和 original_value 不会来自同一张表,但这会给你一个大局。
为什么不将 -0.51% 存储为 -0.0051?