使用百分比计算:十进制还是可读?

问题描述 投票:1回答:1

简单的问题(并且如果这是基于意见而道歉):我应该如何存储百分比?

在编写包含大量分析计算的程序,或涉及百分比(退货率,APR,利润率等)的财务计算时,以下三个选项中的哪一个是最佳实践,在性能,可读性,良好的代码实践等方面。

  1. 将百分比存储为十进制形式的浮点数:即20%= 0.20,并编写一个过滤器以在UI中对其进行转换。 (在django中,这将是一个模板标签,每次显示一个百分比时都需要应用)。
  2. 将百分比存储为整数,并在需要在后端进行计算时除以100,即20.13%存储为20.13并像percent/100 * myNumber一样使用。
  3. 创建(或使用库)Percent的数据类型,它可以同时执行这两种操作,例如具有属性'Percent.value'和'Percent.display'的属性修饰属性,它乘以100和舍入。在这个类中,我想__str__被设置为显示值,而所有其他操作都使用原始值。

据我所知,1是最直观的,但似乎不是封装的最佳实践,并且可能导致显示奇数值,调试等错误的问题.2似乎对开发人员来说非常烦人,并且可能导致由于这个错误。选项3似乎是不必要的内存开销。

哪个是行业中使用最多的,为什么?

python django percentage software-design
1个回答
1
投票

我建议你选择1。

但是你应该使用Pythons float库,例如Djangos decimal来存储它,而不是DecimalFielddecimal.Decimal对象允许固定的舍入,这将使您免于很多麻烦。

我建议将百分比存储为乘法所需的值(例如:将21.56%存储为Decimal('0.2156'))。在我看来,最好在需要时改变显示,而不是在计算中进行转换。

是的,Django中的模板标签听起来像是以百分比形式显示这些值的好方法。

© www.soinside.com 2019 - 2024. All rights reserved.