不同情况下相同值的不同输出 - 数组

时间:2011-10-28 16:40:32

标签: php arrays fractions

我无法理解为什么这些数组会给我不同的输出:

•此值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

所以,我的问题是为什么?我想要小数值,但是我说的第一个代码不能用小数。

感谢

3 个答案:

答案 0 :(得分:2)

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

你最好的选择是做一些事情:

$t = explode("/", $matrix[0][2]);
echo ($t[0] / $t[1]);

答案 1 :(得分:1)

第一个示例值中的

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

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

答案 2 :(得分:1)

数据库中的值是字符串,您自己设置的值是 float

如果您使用的是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),并在获得结果时将结果转换为浮点数。