Php 我应该使用哪种SQL类型来输入值4.865472349

Php 我应该使用哪种SQL类型来输入值4.865472349,php,mysql,sql,types,Php,Mysql,Sql,Types,PHP运行一个正确计算值的脚本。当我回显该值时,结果为4.865472349 然后使用一个简单的更新脚本将值输入到我的数据库中 $query = "UPDATE members SET rating = $r WHERE username = '$username'"; mysql_query($query); 当我这样做时,输入数据库的值是5 如果我直接用4.865472349替换前面公式中的$r,它将产生相同的结果 显然这是因为我的SQL类型被设置为“整数” 但是我不

PHP运行一个正确计算值的脚本。当我回显该值时,结果为4.865472349

然后使用一个简单的更新脚本将值输入到我的数据库中

$query = "UPDATE members
     SET rating = $r 
     WHERE username = '$username'";
mysql_query($query);
当我这样做时,输入数据库的值是5

如果我直接用4.865472349替换前面公式中的$r,它将产生相同的结果

显然这是因为我的SQL类型被设置为“整数”

但是我不确定要把它改成什么来解决这个问题。有什么帮助吗?

您可能应该使用。它与PHP中的浮点数(在大多数配置中)具有相同的精度和范围

要使用PHPMyAdmin切换类型,请执行以下操作:

  • 点击表格
  • 点击结构
  • 单击评级旁边的更改(铅笔图标)
  • 在“类型”下选择选项“双重”
  • 击救

  • 编辑数据库中的列类型,使其能够容纳多个整数

    ALTER TABLE members
    CHANGE rating rating float(10,9); 
    

    根据要存储的数字,可以使用float、double或decimal。我想说浮动已经足够好了

    如果您想要与4.865472349相同的精度,可以使用十进制(10,9)

    参考文献

    例如,十进制(18,9)列的小数点两侧各有九位数字,因此整数部分和小数部分各需要4个字节。十进制(20,6)列有14个整数和6个小数位数。整数位数要求其中9位为4字节,其余5位为3字节。六个小数位数需要3个字节


    假设您使用的是MySql

    您使用的是什么数据库?您允许的值范围是多少?您需要什么精度?添加了mysql标记,因为有
    mysql\u query
    行。我会使用decimal,这样以后就不会出现浮点算术的问题了。+1。只要您不关心十进制近似,就可以使用DOUBLE。如果您需要精确的十进制值,没有近似值,并且最大值的范围是有界的,因此您可以在给定的比例和精度范围内生存,那么
    decimal
    是一种方法。在phpMyAdministration中执行此操作的任何建议请选择数据库并找到sql列,然后复制、粘贴和执行。也有一种gui方法来实现这一点。可能类似于编辑表格,并将列类型从INT更改为float(10,9)+1。如果您有一个有界范围(最大值),并且可以在指定的范围内保持比例和精度,则十进制类型是一种选择。否则,DOUBLE将提供更大的范围,但在存储和检索十进制值时存在一些不精确性(近似值)。