【问题标题】:Django Template Round to Nearest Non ZeroDjango 模板四舍五入到最近的非零
【发布时间】:2026-01-30 02:45:01
【问题描述】:

问题:

根据尾随小数将可变大小输入舍入为可变长度。

说明:

我正在为鸡尾酒构建一个食谱应用程序,这意味着我希望在以毫升为单位存储不同长度的测量值时具有一些可变性。

假设我有一个食谱,其中包括:

  • 50ml 杜松子酒
  • 25ml 青柠汁
  • 12.5ml 简易糖浆
  • 1.25ml 黑樱桃利口酒

(这只是一个示例食谱 - 它的味道会像酸尿 - 不要费心去做)

目前存储在此模型中:

class Ingredients(models.Model):
    SLU = ForeignKey("Spec", on_delete=CASCADE)
    PLU = ForeignKey("Product", on_delete=CASCADE)
    measure = models.DecimalField(decimal_places=3, max_digits=5)

这意味着存储中的值是:

  • 50.000 杜松子酒
  • 25.000 柠檬汁
  • 12.500 简单糖浆
  • 1.250 黑樱桃利口酒

如何以与上面第一次显示食谱时最初显示的相同方式,以最好的方式将这些值显示给用户,不带尾随零?

解决方案

使用 Django 的 |floatformat 并不能解决问题,显示如下:

floatformat:"2": 50.00, 25.00, 12.50, 1.25

floatformat:"-2": 50, 25, 12.50, 1.25

在 python 后端使用常规的数学舍入函数将导致与上述类似的结果,除非我为所有 3 个可能的小数使用硬编码选项使其更长。

对此有什么好的建议吗?

【问题讨论】:

    标签: python django django-models django-templates


    【解决方案1】:

    尝试标准化:

    {{ measure.normalize }}
    

    【讨论】:

    • 我们需要的英雄,而不是我们应得的英雄!谢谢大佬