PHP 存入 decimal(60,30) 类型数据,第15位的时候被四舍五入了

如题:

$before = NavigationModel::where('uid', $userId)->find($beforeId);
$beforeRank = $before->rank ?? 0;
$after = NavigationModel::where('uid', $userId)->find($afterId);
$afterRank = $after->rank ?? bcadd($current->rank, 2, 30);
$current->rank = (string) bcdiv(bcadd($beforeRank, $afterRank, 30), 2, 30);
dump($beforeRank);
dump($afterRank);
dump(bcadd($beforeRank, $afterRank, 30));
dump($current->rank);
$current->save();

PHP 存入 decimal(60,30) 类型数据,第15位的时候被四舍五入了

PHP 存入 decimal(60,30) 类型数据,第15位的时候被四舍五入了

打印出来事正常的写入到数据库就被四舍五入了,求大佬解答

未知的永远是最精彩的!
附言 1  ·  2年前

不需要使用 mysql 函数、其实是被框架(thinkphp5)给科学计数法了,通过设置模型字段类型也不起作用,设置字段值的时候,使用 DB::raw("100000000000000000000.100000000000000000000000000001") 方法包裹就可以了;

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

先手动填到mysql(一般没有问题) 没有问题就打印模型出来 在打印sql 看执行的语句

2年前 评论
heroColin (作者) 2年前
heroColin (作者) 2年前
heroColin (作者) 2年前
MArtian 2年前
heroColin (作者) 2年前
heroColin (作者) 2年前
MArtian 2年前
MArtian 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
heroColin (作者) 2年前
看上隔壁小花了啦 (楼主) 2年前
heroColin (作者) 2年前
看上隔壁小花了啦 (楼主) 2年前
heroColin (作者) 2年前
看上隔壁小花了啦 (楼主) 2年前
讨论数量: 28
chowjiawei

啥业务逻辑 能用这么多位

2年前 评论
看上隔壁小花了啦 (楼主) 2年前

先手动填到mysql(一般没有问题) 没有问题就打印模型出来 在打印sql 看执行的语句

2年前 评论
heroColin (作者) 2年前
heroColin (作者) 2年前
heroColin (作者) 2年前
MArtian 2年前
heroColin (作者) 2年前
heroColin (作者) 2年前
MArtian 2年前
MArtian 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
看上隔壁小花了啦 (楼主) 2年前
heroColin (作者) 2年前
看上隔壁小花了啦 (楼主) 2年前
heroColin (作者) 2年前
看上隔壁小花了啦 (楼主) 2年前
heroColin (作者) 2年前
看上隔壁小花了啦 (楼主) 2年前
#### 精准计算
- 精确加法 `bcadd($a, $b, $scale)`
- 精确减法 `bcsub($a, $b, $scale)`
- 精确乘法 `bcmul($a, $b, $scale)`
- 精确除法 `bcdiv($a, $b, $scale)`
- 精确求余/取模 `bcmod($a, $b)`
2年前 评论

可能不是最优的解决办法,使用 Mysql 的 TRUNCATE(14100001005828000000001.000000000000000000000000000000, 30) 截取到自己需要的长度。

谢谢各位大佬,一人一赞👍

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!