PHP 一定要做精确计算吗?

2018-11-23 11:29:26 +08:00
 jss
项目一直有金额误差,如:floor((39.89 - 39.88) * 100) /100 = 0 ;大家是如何处理 php 计算的?
5581 次点击
所在节点    PHP
32 条回复
hlwjia
2018-11-23 16:35:54 +08:00
@sundev 平时买东西有比分小的单位吗? ¥ 9.991 ?

如果你是搞金融的那就 单位用基点好了
hlwjia
2018-11-23 16:37:45 +08:00
哎,就这样的水平也去写交易系统?

这个是类似基本常识了(还是大家都不知道?
jswh
2018-11-23 16:51:03 +08:00
用整数,不是整数的想办法弄成整数
sundev
2018-11-23 17:02:43 +08:00
@skdyk @hlwjia 以前写过一套供方系统,有些公司采购的小零件单价都比较低的,很多都需要精确到小数点后 3 位!
realpg
2018-11-23 17:22:16 +08:00
int 不是为了精度啥的问题 还有性能问题
realpg
2018-11-23 17:23:49 +08:00
@sundev #18
64bit 下 int 的最大值有 20 个数字的长度 自己定义 1 代表多少即可
数据库内也有对应的 bigint 实现
holystrike
2018-11-23 17:28:47 +08:00
q6014080325
2018-11-23 17:39:07 +08:00
jules304
2018-11-23 18:04:52 +08:00
BC 函数+1
MeteorCat
2018-11-23 18:07:47 +08:00
bcmath
solaro
2018-11-28 14:13:49 +08:00
@onion83 这个坑我踩过,int 都不要用,一定要用 longint
Snail233
2018-12-05 12:37:38 +08:00
bcadd()

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

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

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

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

© 2021 V2EX