Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-十进制(M,D)与双精度(M,D)的比较_Mysql_Sql - Fatal编程技术网

MySQL-十进制(M,D)与双精度(M,D)的比较

MySQL-十进制(M,D)与双精度(M,D)的比较,mysql,sql,Mysql,Sql,我知道这个问题已经被问过好几次了。。但是,我仍然没有得到一个满意的解释,特别是关于为什么我们必须使用十进制作为货币目的。。据我所知, Decimal可以保存比Double Decimal存储精确值,Double存储近似值 那么,谁能解释一下,也许能给出一些关于 精确值和近似值是什么意思 我为什么要使用十进制进行货币用途 目前我正在使用Double(15,2),因为它为我的老板提供了足够的精度。此外,我在这方面做了一些测试,没有发现任何精度问题 测试查询: create table test(

我知道这个问题已经被问过好几次了。。但是,我仍然没有得到一个满意的解释,特别是关于为什么我们必须使用十进制作为货币目的。。据我所知,

  • Decimal
    可以保存比
    Double
  • Decimal
    存储精确值,
    Double
    存储近似值
  • 那么,谁能解释一下,也许能给出一些关于

  • 精确值和近似值是什么意思
  • 我为什么要使用
    十进制
    进行货币用途
  • 目前我正在使用
    Double(15,2)
    ,因为它为我的老板提供了足够的精度。此外,我在这方面做了一些测试,没有发现任何精度问题

    测试查询:

    create table test(
      value1 Decimal(15,4),
      value2 Double(15,4)
      );
    
    insert into test values(0.0001, 0.0001),
                           (123.123, 123.123), 
                           (0.0000001, 0.0000001);
    
    select sum(value1), sum(value2) from test
    
    结果

    SUM(VALUE1) SUM(VALUE2)
    123.1231    123.1231
    

    如果你现在不能做到这一点,并不意味着它在未来不会发生。如果你坚持使用双精度,就要为舍入错误做好准备。在货币操作方面,检查对此问题的评论,如well@Naktibalda嗯,这是人们不断提到的一个原因,但没有人真正给出一个好的例子..插入0.75*0.2这样的值并检查(不是直接检查0.15)好吧,在我的情况下,你的论点是无效的,检查。。如果这是错误的方法,那么请分享你的小提琴。