【问题标题】:An exception has been thrown during the rendering of a template ("Warning: Loss of data on string conversion")渲染模板期间抛出异常(“警告:字符串转换时数据丢失”)
【发布时间】:2019-04-09 11:06:27
【问题描述】:

我正在使用http://php-decimal.io/

这是我的树枝

<td class="text-right">{{ accDocument.taxValueSum|number_format(3, ',', ' ') }} {{ accDocument.currency.code }}</td>

这是我在实体中的功能

public function getVatValue(): Decimal     
{         
    return new Decimal($this->vatValue, 3);     
}

【问题讨论】:

  • 问题出在哪里?你不知道如何处理这个异常?还是你不知道异常是什么意思?
  • 我不知道如何处理该异常。
  • 显然您应该抓住它 (try/catch),并根据您的业务案例对其进行处理。或者,如果您确定字符串是小数,则直接忽略它。
  • @AdiFatol twig 内部没有 try/catch
  • 我想知道您的getVatValue() 是如何被调用的,当您访问accDocument.taxValueSum... 总和肯定有所不同?

标签: php symfony doctrine twig


【解决方案1】:

它的工作精度从 3 提高到 15。

public function getVatValue(): Decimal     
{         
    return new Decimal($this->vatValue, 15);     
}

【讨论】:

    【解决方案2】:

    来自official doc

    如果值未完全解析,将引发警告。为了 例如,“0.135”到 2 的精度将导致“0.14” 警告。同样,精度为 2 的 123 将导致 120 因数据丢失而发出警告。

    据我了解,精度与值长度有关。所以new Decimal($value, strlen((string) $value)) 应该可以工作。在你的情况下:

    public function getVatValue(): Decimal     
    {         
        return new Decimal($this->vatValue, strlen((string) $this->vatValue));     
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 2018-12-23
      • 2014-01-13
      • 2018-12-26
      • 1970-01-01
      • 2020-09-27
      • 2019-12-02
      • 2019-09-03
      • 1970-01-01
      相关资源
      最近更新 更多