我用的是mysql5.7,对一个decimal类型的列求和时有精度问题吗?
lskq00tm1#
在MySQL中,DECIMAL数据类型旨在提供精确的十进制计算而不会损失精度。因此,在对十进制值求和时,只要计算的精度和范围在指定的范围内,MySQL就可以确保准确的结果。在本例中,a列定义为DECIMAL(10,8),这意味着它可以存储总共10位的十进制值,其中8位保留用于小数部分(小数点后)。对于您提供的值:
1.23456789 0.00000001
当您对这两个值执行求和操作时,MySQL将正确计算精确的和:
SELECT SUM(a) FROM router;
结果将为1.23456790,保持为a列定义的精度和比例。因此,在MySQL 5.7中,只要被求和的值的总精度和小数位数不超过指定的限制,对十进制类型的列求和时就不应该有任何精度问题。
1条答案
按热度按时间lskq00tm1#
在MySQL中,DECIMAL数据类型旨在提供精确的十进制计算而不会损失精度。因此,在对十进制值求和时,只要计算的精度和范围在指定的范围内,MySQL就可以确保准确的结果。
在本例中,a列定义为DECIMAL(10,8),这意味着它可以存储总共10位的十进制值,其中8位保留用于小数部分(小数点后)。
对于您提供的值:
当您对这两个值执行求和操作时,MySQL将正确计算精确的和:
结果将为1.23456790,保持为a列定义的精度和比例。
因此,在MySQL 5.7中,只要被求和的值的总精度和小数位数不超过指定的限制,对十进制类型的列求和时就不应该有任何精度问题。