MySQL十进制澄清

ubi*_*con 3 mysql decimal

在MySQL中使用十进制时,是否将其值(5,3)设为最大值99.999?如果不是,我该如何指定?我的号码是货币,所以我需要使用小数,但它不应超过99,它必须有3个小数位.

Cra*_*der 5

decimal (5,3)是用于定义范围为的字段的标准SQL方法-99.999 .. 99.999.

请注意,对于MySQL,如果您尝试插入超出范围的值,MySQL将自动将值截断为最接近的边界值(在本例中为99.999或-99.999),而不会抛出错误.

添加

在这种情况下,将5存储最多的数据位,精确3到小数点右边的数字.如果您插入一个类似的数字1.23将被存储为1.230; 同样1将被存储为1.000.如果你插入12.3456它将被舍入到12.346; 如果你插入12.0001它将向下舍入到12.000.

将列返回到程序时,确切的表示形式将取决于数据库API如何映射十进制数据类型.如果它映射到一个整数,你将失去小数; 如果它映射到浮点数(浮点数,双精度数),则可能会失去精度; 如果它映射到Decimal(C#/ Java),那么只要您的值在数据类型的范围内,您就会获得精确的表示.