PHP 什么情况下 5.590 小于 5.59

2017-07-26 16:51:34 +08:00
 solaro

上图实际开发业务中,碰到了个坑,

数据库用的 mysql 左边 5.590 在数据库中存储是 decimal(10,3) 右边是换算出来的 float

现在 floatval(5.590) < floatval(5.59)

我 sun

4962 次点击
所在节点    PHP
43 条回复
incompatible
2017-07-27 18:09:45 +08:00
@solaro int 或 bigint 没法处理小数位数,两个数相除时是要处理结果保留几位小数以及 ceiling(四舍五入 / 去尾 / 进一)的规则的,所以应该用(数学意义上的)decimal。
那哥们用 string 的原因是 php 这个所谓的最好的语言居然没有内置对 decimal 的支持,而是需要通过 bc extension 处理 string 来实现对 decimal 的操作。
lestat
2017-07-28 20:14:58 +08:00
写个专门运算的函数,全部乘以 100 之后运算,把结果再除以 100 返回,可以参考微信支付的做法
mingyun
2017-07-29 14:12:15 +08:00
@stabc 链接 500 Internal Server Error

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/378136

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX