项目一直有金额误差,如:floor((39.89 - 39.88) * 100) /100 = 0 ;大家是如何处理 php 计算的?

1 Jaylee Nov 23, 2018 bcmatch |
2 onion83 Nov 23, 2018 via iPhone 计费项目,请使用分,字段类型为 int |
4 mayday526 Nov 23, 2018 直接这样不行吗.....round((39.89 - 39.88),2) |
5 lockiee Nov 23, 2018 via iPhone bcmath +1 |
6 BaoZiDaShen Nov 23, 2018 浮点数运算都会有误差,这是都存在的问题。特别涉及金钱,必须的精确计算,钱多了客户不找你,钱少了分分钟找你拼命。不理解的话,Laruence 大神的这遍博客看一下 http://www.laruence.com/2013/03/26/2884.html |
7 Joyboo Nov 23, 2018 用分做单位 |
8 maichael Nov 23, 2018 看需求,不一样的需求对精度要求不一致。 |
9 buhi Nov 23, 2018 浮点数算钱, 亏起来一天能亏个几百上千 |
10 947211232 Nov 23, 2018 PHP 的自动类型转换的一个例子是乘法运算符“*”。如果任何一个操作数是 float,则所有的操作数都被当成 float,结果也是 float。否则操作数会被解释为 integer,结果也是 integer。注意这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式本身的类型。 |
11 947211232 Nov 23, 2018 |
12 thinkwei2012 Nov 23, 2018 via Android bcmath+1 |
13 sunmonster Nov 23, 2018 |
14 gabezhao Nov 23, 2018 bcmath+1 需要的,做 erp 报表之类的需要精确计算,要不然数据不准确 |
15 NEETLEE Nov 23, 2018 上个星期我们的支付业务也遇到这个 bug,头痛了一个星期。 最终方案是需要把浮点型转整型的时候先把浮点数转成字符串再转整型,就不会丢失精度了 |
16 xxbutoo Nov 23, 2018 你可能需要翻翻 php 文档.. 金额相关的还是用分为单位吧。 存 float 遇到坑你就后悔了 |
17 msg7086 Nov 23, 2018 金额用浮点这种近似数值简直是做大死。 |
22 hlwjia PRO 哎,就这样的水平也去写交易系统? 这个是类似基本常识了(还是大家都不知道? |
23 jswh Nov 23, 2018 用整数,不是整数的想办法弄成整数 |
25 realpg PRO int 不是为了精度啥的问题 还有性能问题 |
27 holystrike Nov 23, 2018 |
28 q6014080325 Nov 23, 2018 BC 任意精度数学 http://php.net/manual/zh/book.bc.php |
29 jules304 Nov 23, 2018 BC 函数+1 |
30 MeteorCat Nov 23, 2018 via Android bcmath |
32 Snail233 Dec 5, 2018 bcadd() |