问题背景:java应用装在linux服务器上,sqlserver数据库装在windows server的虚拟机上

问题详情:持久层mybatis的sql向sqlserver插入数据,数据中的数字为一位或者两位的数字,并带单引号,插入sqlsserver数据库后,最后一位有效的小数位会被自动四舍五入,出现误差。


解决方案:在数字的后面补数字 0 ,因money是默认保留4位有效小数位,我将带小数的数字补至4位或者5位,数据传输过去之后,有效小数位正常,没有被自动四舍五入。


猜想:因为在本地windows环境,由mybatis插入本地的sqlserver不会出现自动四舍五入的情况,所以这种情况比较诡异;大概是不同系统之间字符解析,触发了sqlserver数据库保存数据时对小数位进行自动四舍五入的机制

Logo

更多推荐