What happens?
const params = {
id: 3,
plan_name: 'testAdd_upd999',
plan_no: '3452422424',
begin_date: '2019-12-15',
end_date: '2020-02-11',
amount: 23231.13
};
await this.app.mysql.update('plan', params)
使用egg-mysql 数据库, 上面执行后数据库 plan 表更新成功,但是 amount字段的value为:23231.1,精度不对,amount为float类型。
而通过在 navicat 客户端执行同样逻辑sql语句更新数据:
UPDATE plan SET plan_name = 'dd234422', amount=2342.33 WHERE id = 3 ;
amount字段精度正常,value为 23231.13
最小可复现仓库
请使用 npm init egg --type=simple bug
创建,并上传到你的 GitHub 仓库
复现步骤,错误日志以及相关配置
相关环境信息
- 操作系统:
mac - Node 版本:
v10.16.2 - Egg 版本:
2.15.1
4条答案
按热度按时间vd8tlhqk1#
这是 JS 本身的精度问题
z31licg02#
这是 JS 本身的精度问题
那sql 语句是正常的,egg-mysql 执行后不是应该和sql执行一样么?如何解决这种问题呢?
axkjgtzd3#
这是 JS 本身的精度问题
那sql 语句是正常的,egg-mysql 执行后不是应该和sql执行一样么?如何解决这种问题呢?
金额在mysql中分2个字段存放,一个存整数的值,一个存小数的值,前端使用.进行字符串切割
isr3a4wc4#
这是 JS 本身的精度问题
那sql 语句是正常的,egg-mysql 执行后不是应该和sql执行一样么?如何解决这种问题呢?
金额在mysql中分2个字段存放,一个存整数的值,一个存小数的值,前端使用.进行字符串切割
可以转成分来存,既能保证精度又可以计算金额准确