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数据类型的数学运算的主要内容,如果未能解决你的问题,请参考以下文章

php MySQL 数据类型

“decimal”是啥类型的MySQL?

MySQL中的decimal是啥类型?

mysql字段类型为decimal,则java 实体类的对应属性类型应该为啥

Mysql中设置小数点用啥数据类型 decimal

Mysql中decimal(15,4)类型,java使用啥类型来定义?