Database 限制MariaDB中小数点后的位置数

Database 限制MariaDB中小数点后的位置数,database,floating-point,mariadb,Database,Floating Point,Mariadb,我目前正在制作一个小型MariaDB数据库,遇到以下问题: 我想保存一个浮点数,小数点后只有2个点,但小数点前的所有内容都不受影响 例如:1.11;56789.12; 9999.00; 9999999999999.01等 我已经做了一些研究,这就是我现在正在使用的: CREATE TABLE mytable ( mynumber DOUBLE(10, 2) ) 这个解决方案的问题是,我还必须限制小数点之前的位置数,这是我不想做的 那么,是否有可能限制小数点后的位置数量,而不影响小数点前

我目前正在制作一个小型MariaDB数据库,遇到以下问题: 我想保存一个浮点数,小数点后只有2个点,但小数点前的所有内容都不受影响

例如:1.11;56789.12; 9999.00; 9999999999999.01等

我已经做了一些研究,这就是我现在正在使用的:

CREATE TABLE mytable (
    mynumber DOUBLE(10, 2)
)
这个解决方案的问题是,我还必须限制小数点之前的位置数,这是我不想做的


那么,是否有可能限制小数点后的位置数量,而不影响小数点前的位置,或者是否有“默认数字”我可以用于小数点之前的位置?

您可以创建一个触发器,用于截取INSERT和UPDATE语句,并将其值截断为小数点后2位。但是,请注意,由于浮点数在机器级别的工作方式不同,实际数字可能会有所不同

双精度数字最多可精确到14位有效数字,而不是一定数量的小数点。实际上,你需要确定你可能想要存储的最大价值是什么。一旦这样做了,DECIMAL类型可能更适合您要做的事情

有关更多详细信息,请参见此处:

不要将
(m,n)
浮点数
双精度
一起使用。它没有任何用处;它确实会导致额外的回合

十进制(10,2)
是可能的;这将精确存储数字(小数点后2位)

另请参见
ROUND()
FORMAT()
以控制特定值的舍入


您犯了一个错误--
9999999999.01
不适合
DOUBLE(10,2)
,也不适合
DECIMAL(10,2)
。它只能处理小数点左边的8(=10-2)位。

谢谢你的回答,虽然有点晚了,但我记得我昨天有这个项目(和这个问题)。祝你今天愉快:)谢谢你的回答:)