简单的问题(如果这太基于意见,我们深表歉意): 我应该如何存储百分比?
在编写包含大量分析计算或涉及百分比(返回率、年利率、利润率等)的财务计算的程序时,以下三个选项中哪一个是最佳实践,就性能、可读性、良好性而言代码练习等
将百分比存储为十进制形式的 float :即 20% =
0.20
,并编写一个过滤器在 UI 中对其进行转换。 (在 django 中,这将是一个模板标签,每次显示百分比时都需要应用它)。每当需要在后端进行计算时,将百分比存储为整数并除以 100,即 20.13% 存储为
20.13
并像percent/100 * myNumber 一样使用
.为 Percent 创建(或使用库)一个数据类型,它可以同时执行这两种操作,例如使用属性“Percent.value”和“Percent.display”的属性装饰属性,该属性乘以 100 并进行舍入。在这个类中,我想象 __str__ 设置为显示值,而所有其他操作都使用原始值。
据我所知,1是最直观的,但似乎不是封装的最佳实践,并且可能导致显示奇数值、调试等错误的问题。2似乎对开发人员来说非常烦人,并可能因此导致错误。选项 3 似乎是不必要的内存开销。
哪个在工业中使用最多,为什么?
最佳答案
我建议按照您的选项 1 进行一些操作。
但是你应该使用Python decimal
而不是float
库,例如 Django DecimalField
将其存储在数据库中。
decimal.Decimal
对象允许固定舍入,这将为您省去很多麻烦。
我建议将百分比存储为乘法所需的值(例如:将 21.56%
存储为 Decimal('0.2156')
)。在我看来,最好在需要时改变显示,而不是在计算中进行转换。
是的,Django 中的模板标签听起来是将这些值显示为百分比的好方法。
关于python - 使用百分比计算 : decimal or readable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54674675/