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