PHP中MySQL DECIMAL数据类型的数学运算
Posted
技术标签:
【中文标题】PHP中MySQL DECIMAL数据类型的数学运算【英文标题】:Mathematical operations on MySQL DECIMAL data type in PHP 【发布时间】:2012-08-14 10:04:19 【问题描述】:我将货币值存储在 mysql 表中,并且我使用 DECIMAL 作为数据类型。我需要抓取这些元素,对这些值进行一些基本的数学运算(加法、减法、求和等),将结果显示给用户,并将它们放在单独的表格中。我知道 MySQL 允许您在表中进行加法和求和,但是有没有办法将其作为 php 变量来执行?我知道在 PHP 中您可以使用 intval() 将字符串数字转换为整数,但这会在转换中丢失十进制值。类似的东西对我有用,因为我总是可以将它转换回字符串并将其输入到不同的 MySQL 表中。
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于PHP中MySQL DECIMAL数据类型的数学运算的主要内容,如果未能解决你的问题,请参考以下文章