【问题标题】:Mathematical operations on MySQL DECIMAL data type in PHPPHP中MySQL DECIMAL数据类型的数学运算
【发布时间】:2012-08-14 10:04:19
【问题描述】:

我将货币值存储在 MySQL 表中,并且我使用 DECIMAL 作为数据类型。我需要抓取这些元素,对这些值进行一些基本的数学运算(加法、减法、求和等),将结果显示给用户,并将它们放在单独的表格中。我知道 MySQL 允许您在表中进行加法和求和,但是有没有办法将其作为 PHP 变量来执行?我知道在 PHP 中您可以使用 intval() 将字符串数字转换为整数,但这会在转换中丢失十进制值。类似的东西对我有用,因为我总是可以将它转换回字符串并将其输入到不同的 MySQL 表中。

【问题讨论】:

    标签: php mysql math decimal sqldatatypes


    【解决方案1】:

    PHP 有 (int) 用于整数,(float) 用于您的问题。

    PHP 可以进行数学运算 (+,-,*,/,%) 无需定义类型且没有任何问题

    $var1 = 1.56;
    $var2 = 0.34;
    $sum = $var1+$var2; // 1.90
    

    【讨论】:

    • 那么PHP即使变量是字符串也可以做数学运算? MySQL 的输出数据将采用 $var1 = "20.54" 而不是 $var1 = 20.54 的形式。如果我理解正确,即使 is_numeric($var1) = false,PHP 也会平等对待。
    • 你为什么不做一个测试环境来看看:)
    • PHP 并不真正关心变量类型是什么,它无论如何都会乘以它,就像 Perl 一样。 PHP 的类型几乎是弱类型。
    • 我实际上使用 SUM() 函数对 MySQL 表中的列数组进行了测试,但由于它是一个字符串而出现错误。我必须使用 $sum = mysql_fetch_assoc(mysql_query("SELECT SUM(cc_amnt) AS cc_sum FROM " .$tablename)) 来获得列的实际总和。
    • 我想我已经习惯了用 C++ 编码,其中变量声明非常重要。 :-)
    【解决方案2】:

    从 MySQL 中取出变量,然后您可以按照此手册页执行简单的算术运算:http://php.net/manual/en/language.types.float.php

    例如

    $a = '0.002';
    $b = '1.1';
    
    echo $c = $a + $b; // Outputs 1.1002
    

    【讨论】:

      【解决方案3】:

      您可以使用
      将字符串转换为浮点数 floatval($stringVar)

      PHP 支持数学运算符。

      如果你有 $a 和 $b。

      $a + $b; 
      $a - $b; 
      $a * $b; 
      $a / $b; 
      $a % $b; 
      

      【讨论】:

        猜你喜欢
        • 2012-04-18
        • 2012-01-16
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        相关资源
        最近更新 更多