【问题标题】:MySql Decimal Datatype : not Inserting Proper ValueMySql 十进制数据类型:未插入正确的值
【发布时间】:2013-04-06 08:14:14
【问题描述】:

短版 我正在尝试插入十进制值,但插入后它为所有十进制值存储 99.999999。我正在使用 MySql 5.5.16。

加长版

我正在尝试使用以下架构创建一个表

CREATE TABLE products (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  product_name CHAR(100),
  group_name CHAR(100),
  lon decimal(8,6),
  lat decimal(8,6),
  PRIMARY KEY (id)
);

我的插入语句看起来像

Insert into products (product_name , group_name , lon, lat) values
('Asparagus' , 'fresh vegetables' , 428743.9819 , 4512618.55);

我插入了 52 个值,在所有 Decimal 中,值返回 99.999999

我还尝试使用FLOAT,它返回100.00000,如果DOUBLE 我也得到99.999999

任何指导都会有所帮助。

【问题讨论】:

  • 这是因为您以错误的方式指定列的长度。您的代码显示lon decimal(8, 6) - 8 个空格,6 个保留用于小数点后的数字。这意味着您的值最多只能达到 99.999999,这是它们可以存储的最大数量。短版:使用lon decimal(12, 6)

标签: mysql floating-point double decimal


【解决方案1】:

更改十进制变量的值。对我来说它工作正常。

CREATE TABLE products (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  product_name CHAR(100),
  group_name CHAR(100),
  lon decimal(15,6),
  lat decimal(15,6),
  PRIMARY KEY (id)
);

【讨论】:

  • 太棒了!!它起作用了..但是如何?那如果实际问题呢??
  • 它基于您传递给 DECIMAL 函数的精度数字。要进一步了解,请阅读 MySql 文档
【解决方案2】:

如果您阅读mysql doc,您会发现您需要decimal (13, 6),因为第一个参数是精度...所以要找到它,您必须计算最大值的全局长度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-04
    • 2012-11-10
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多