0

我正在尝试使用液体模板显示 0.733675715 的数值。

以下代码

{%- assign rate = 0.733675715 -%}
{{ rate }}

结果是:0.7336757

我找不到办法:

  1. 将数值转换为字符串
  2. 强制液体显示所有小数位

- 编辑

注意:Azure 逻辑应用集成帐户使用 DotLiquid 在 JSON/XML/Text 之间进行转换

4

1 回答 1

1

我在dotLiquid库中发现了这个问题。可以在此 PR 中找到修复程序:https ://github.com/dotliquid/dotliquid/pull/353 。

基本上,在 assign 语句中,dotliquid 将值解析为float [1],因此会丢失精度。

// Floats.
match = FloatRegex.Match(key);
if (match.Success)
{
    // For cultures with "," as the decimal separator, allow
    // both "," and "." to be used as the separator.
    // First try to parse using current culture.
    if (float.TryParse(match.Groups[1].Value, NumberStyles.Number, FormatProvider, out float result))
        return result;

    // If that fails, try to parse using invariant culture.
    return float.Parse(match.Groups[1].Value, CultureInfo.InvariantCulture);
}
  1. https://github.com/dotliquid/dotliquid/blob/b415f6aaa5b66fdbfa9c5d676427c7663c1e98e3/src/DotLiquid/Context.cs#L347
于 2019-10-30T19:00:52.633 回答