0

我不明白为什么这些数组给了我不同的输出:

• 此值 1/4 来自表 (db)

id | value
...
2  | 1/4
3  | 1/7

echo $matrix[0][2]; //show 1/4

• 但如果我这样做 = 1/4

echo $matrix[0][2] = 1/4 // show 0.25

这发生在所有分数值中。例如,第一个示例中的 1/7 显示 1/7,但在第二个示例中显示 0.142857142

所以,我的问题是为什么?我总是想要十进制值,但正如我所说的第一个代码不适用于小数。

谢谢

4

3 回答 3

2

在第一个示例中,您正在从数据库中检索字符串值。在第二个示例中,您正在评估一个数学表达式。

您最好的选择是执行以下操作:

$t = explode("/", $matrix[0][2]);
echo ($t[0] / $t[1]);
于 2011-10-28T16:47:13.440 回答
1

第一个示例值中的 Cos' 具有字符串类型,而在第二个示例值中,您正在计算数学函数,并且答案具有浮点类型。

如果你使用这个结构“echo $a = '1/4';” 输出将是相同的。

于 2011-10-28T16:43:08.750 回答
1

数据库中的值是一个字符串,您自己设置的值是一个浮点数

如果您使用 MySQL,您可以使用mysql_fetch_field来了解字段类型,这在您使用MyISAM时非常有用(MySQL 总是返回字符串)。

你有简单/丑陋的解决方案:

$var = '1/4';
echo (float)eval('return '.$var.';');

另一个解决方案:

$var = '1/4';
$tmp = explode('/', $var, 2);
$tmp = $tmp[0]/$tmp[1];
echo $tmp;

但我认为最好的解决方案是将结果保存在数据库中(例如 0.25),并在获取结果时将结果转换为浮点数。

于 2011-10-28T16:48:45.487 回答