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