相关疑难解决方法(0)

float和decimal数据类型之间的差异

当我在MySQL中使用float和decimal数据类型时,它有什么不同?

我什么时候应该使用哪个?

mysql

172
推荐指数
7
解决办法
20万
查看次数

将双类型数据(地理定位)保存到数据库时,奇怪的(?)值会发生变化

我有两个用于存储地理位置数据的字段,在我的MySQL数据库中定义为双精度数:

`address_geo_latitude` float(10,6) NOT NULL,
`address_geo_longitude` float(10,6) NOT NULL
Run Code Online (Sandbox Code Playgroud)

我正在使用Yii2的double验证器而不是用户传递的值:

public function rules()
{
    return [
        [['address_geo_latitude', 'address_geo_longitude'], 'double', 'min'=>0, 'max'=>360]
    ];
}
Run Code Online (Sandbox Code Playgroud)

(虽然我的测试似乎证明,这个问题与Yii2验证器无关)

在测试期间,我观察到值的奇怪(?)变化,即:

  • 359.90成为359.899994(0,000006差异),
  • 359.80成为359.799988(0,000012差异),
  • 311.11成为311.109985(0,000015差异),
  • 255.55成为255.550003(-0,000003差异),
  • 205.205成为205.205002(-0,000002差异),
  • 105.105变得105.105003(-0,000003差异).

但:

  • 359.899994遗体359.899994,
  • 311.109985遗体311.109985,
  • 311遗体311,
  • 255遗体255, …

mysql double geolocation yii yii2

5
推荐指数
1
解决办法
1027
查看次数

Mysql 小数(10,9) 停止到 9.999999999

您好,抱歉这个菜鸟问题,但是为什么 DECIMAL(10,9) 给我最大 9.999999999 ?10 不是小数点左边的长度吗?喜欢9999999999.999999999

像 9999999999.999999999 这样的商店号码有什么好的解决方案?双精度(9,9) 或十进制(9999999999,9) ?感谢您

Column  Type    Null    Default Comments    MIME
id      int(1)  No           
value   decimal(19,9)   No           
value2  decimal(10,9)   No      
Run Code Online (Sandbox Code Playgroud)

mysql

2
推荐指数
1
解决办法
1392
查看次数

标签 统计

mysql ×3

double ×1

geolocation ×1

yii ×1

yii2 ×1