Yii2 / PHP / MySQL-小数点被截断,从而通过乘法给出错误的结果

时间:2019-02-07 07:56:09

标签: php mysql yii2 decimal

在MySQL中,我有一个属性P10,它是一个十进制(6,2)。如果我在Yii2中回显它,我会得到20,45-为什么要用逗号,为什么不指向呢?我如何在配置中设置decimalSeparator并不重要。如果将20,452.1相乘,我得到的是 42 而不是 42.945 ,因此似乎20,45被截断为{{ 1}}在计算中使用时,我不知道为什么。我已经花了很多时间进行搜索,这使我逐渐发疯。

有趣的是,我在Yii2 gridview中回显了两个属性,并且在MySQL中都为小数(6,2),但是仍然以点作为小数分隔符和另一个为逗号...? / p>

我是否必须明确告诉Yii2小数是十进制,然后将其额外格式化为小数?

您能指出我正确的方向吗?

代码:

20

1 个答案:

答案 0 :(得分:0)

  

20,45被截断为20

是的。在数字上下文(*)中使用字符串(即“ 20,45”)时,将对该字符串进行尽可能多的解析。在这种情况下,,将停止数字,从而忽略 ,45。 (对比:“ 截断”表示要包含45,然后扔掉。)

获取20,45而非20.45的方法是将“语言环境”设置为例如“ de”(德语)。

下面是一个来自manual的示例:

SELECT FORMAT(12332.2,2,'de_DE');
         -> '12.332,20'