Unusual values with PHP/MYSQL floats
本问题已经有最佳答案,请猛点这里访问。
我刚碰到一个奇怪的问题。我在MySQL中有以下表格:
1 2 3 4 5 6 7 8 9 | table:deposits user_id amount 1 0.50 table:withdrawls user_id amount 1 0.01 1 0.01 1 0.01 |
为了获得平衡,我运行这个:
1 | SELECT (IFNULL((SELECT sum(amount) FROM deposits WHERE user_id = 1),0) - IFNULL((SELECT sum(amount) FROM withdrawls WHERE user_id = 1),0) ) as balance |
号
然后我把它作为
1 | return (float) $row['balance'] |
出于某种奇怪的原因,结果是浮动(0.47000000067055)。有人知道为什么会有奇怪的圆角吗?
浮点运算并不能精确地表示所有实数。
也就是说,我不知道到底是如何生产47000000067055。将
我怀疑您的PHP实现以一种不太理想的方式将