2013-11-20 49 views
1

我目前在mySQL数据库中有一个十进制(24,16)行;但是当我将数据保存到它时;它改变了我放入的价值。目前为止,我现在可以看到;小数我需要最大为16MySQL十进制(24,16)产生奇怪的结果

一个例子:

  • 我把:5.96666666666667
  • 当我检索数据返回5.96666666666666995

这是否有道理?我需要以mySQL处理这种方式找到答案;或者我应该看看我的代码(Magento - 但它已完全适应处理超过4位小数,我需要弄清楚如何使数据库处理它)

我知道这不是一个非常具体问题代码明智,但我只是想绕过这个问题:-)

感谢您指出我在正确的方向!

+0

是SQL Query的输出还是让你在PHP中运行? –

+1

我怀疑你的定点值是在你的应用程序之外的某个地方被转换为一个浮点值。如果您依赖于精确的值,那么您的应用程序将不得不使用对定点数据敏感的数据类型(因为Magento使用非常松散类型的PHP进行编码,您可能必须将其值视为字符串)。 – eggyal

+0

它由Magento输出。我会在明天进行调查,看看是否可以找出转换发生的位置,然后回到此处。 –

回答

1

我设法得到了它的底部。如前所述,MySQL行的数据类型没有问题。我设法追溯到Magento(确切的代码位置未知)。

当我对相似的设置进行计算时;它一切正常,所以看起来// @ eggyal的建议是正确的。

所以,如果你正在寻找一种方式让Magento工作超过4位小数;我建议你停止尝试;)