将数据从英制 (fl oz) 转换为公制 (mL),然后再转换回来

Converting data from imperial (fl oz) to metric (mL) and back again

将数据库中的所有内容存储为英制 (fl.oz),然后转换为公制 (mL)(如果用户选择公制作为他们的首选测量系统)。

计算即时完成并在 UI 上更新。

我的问题是因为我将数据存储为盎司。如果用户正在使用 ml。当显示的总量明显减少时,添加到他们的总数中。例如。 500mL 转换为 16oz,然后转换回 mL 为 473mL。

这是我的换算公式: _toMetric 在值作为 fl 来自数据库时使用。 oz 和 _toImperial 用于将用户输入的金额转换为 oz。在存储数据库之前。

  double _toMetric(int value) {
    return (value * 29.574);
  }

  double _toImperial(int value) {
    return (value / 29.574);
  }

我该如何解决这个问题?

这是因为您插入的是 int 而不是 double。

500ml = 16.9oz

您在函数中插入了 16oz,它等于 473。

数字应该是双精度数而不是整数。