mysql浮点数decimal、float、double默认进位方式
mysql数据库的舍入模式,decimal是四舍五入,float是四舍六入五成双,不完全是按相邻一位进位(1.1250—》1.2,1.1251—》1.3,1.1350—》1.4),如果相邻一位为5并且5后面的值大于0,则进位。double跟float一样。 以上结论纯属测试结果,不是权威论点。详细请看示例: testRound表结构: 1.小数点后第二位是偶数,第三位小于5 sql: INSERT INTO testRound (decimal, float, double) VALUES (‘1.1236’, ‘1.1236’, ‘1.1236’); 结果:1.12 1.12 1.12 2. 小数点后第二位是偶数,第三位等于5,第四位大于5 sql:INSERT INTO testRound (decimal, float, double) VALUES (‘1.1256’, ‘1.1256’, ‘1.1256’); 结果:1.13 1.13 1.13 3. 小数点后第二位是偶数,第三位大于5 sql:INSERT INTO testRound (decimal, float, double) VALUES (‘1.1266’, ‘1.1266’, ‘1.1266’); 结果:1.13 1.13 1.13 4. 小数点后第二位是偶数,第三位等于5,第四位等于0 sql:INSERT INTO testRound (decimal, float, double) VALUES (‘1.1250’, ‘1.1250’, ‘1.1250’); 结果:1.13 1.12 1.12 5. 小数点后第二位是偶数,第三位等于5,第四位大于0 sql:INSERT INTO testRound (decimal, float, double) VALUES (‘1.1251’, ‘1.1251’, ‘1.1251’); 结果:1.13 1.13 1.13 6. 小数点后第二位是偶数,第三位等于5,第四位等于5 sql:INSERT INTO testRound (decimal, float, double) VALUES (‘1.1255’, ‘1.1255’, ‘1.1255’); 结果:1.13 1.13 1.13 7. 小数点后第二位是奇数,第三位等于5,第四位等于0 sql:INSERT INTO testRound (decimal, float, double) VALUES (‘1.1350’, ‘1.1350’, ‘1.1350’); 结果:1.14 1.14 1.14 8. 小数点后第二位是奇数,第三位小于5,第四位大于5 sql:INSERT INTO testRound (decimal, float, double) VALUES (‘1.1349’, ‘1.1349’, ‘1.1349’); 结果:1.13 1.13 1.13 9. 小数点后第二位是偶数,第三位等于5,第四、五位等于0,第六位大于0 sql:INSERT INTO testRound (decimal, float, double) VALUES (‘1.125001’, ‘1.125001’, ‘1.125001’); 结果:1.13 1.13 1.13 10.sql里做加减法时是先加减再进位 sql:UPDATE test SET num1=10.01-0.0049 WHERE id=1; 结果:10.01 sql:UPDATE test SET num1=10.01-0.0050 WHERE id=1; 结果:10.01 sql:UPDATE test SET num1=10.01-0.0051 WHERE id=1; 结果:10.00