0

我遇到了困难并且非常不愿意走哪条路,如果有更好的方法可以做到这一点,我有一个通配符输入 - 如果你可以这么称呼它 - 可能有这些类型的输入

  • +0.77
  • +0.5%
  • -0.51%

平面值始终为正值,百分比值也可以是,存储这些值的最佳做法是什么?作为字符串或作为 2 列,一列具有值,另一列用于值类型的 bool?我很困惑,因为如果我选择最简单的路径,在某些情况下我会遇到另一个问题,我需要将这些值乘以一个整数并考虑trim($value, '%'),然后检查它是否有将它添加到结果中

4

2 回答 2

0

这可能看起来有点矫枉过正,但我​​肯定会在这里寻找对象。两个类别,一个以绝对值偏移,另一个以百分比值偏移。定义一个工厂方法来解析输入字符串并生成任一类。然后,让这两个类扩展一个公共接口,该接口将包含一个类似“getAjustedValue(initialValue):ajustedValue”的方法。这将使这些调整值的使用更容易和更清晰。

OP评论后更新

至于数据库中的存储,我会将两种类型的调整存储在不同的列中。它使编写计算调整值的 SELECT 语句变得非常容易,如: SELECT (original_value * ajustement_ratio + ajustement_absolute) as adjusted_value FROM .... 显然,我希望 ajustements 和 original_value 不会来自同一张表,但这会给你一个大局。

于 2013-10-23T20:03:01.660 回答
0

为什么不将 -0.51% 存储为 -0.0051?

于 2013-10-23T20:07:45.573 回答