我无法理解为什么这些数组会给我不同的输出:
•此值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
所以,我的问题是为什么?我想要小数值,但是我说的第一个代码不能用小数。
感谢
答案 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),并在获得结果时将结果转换为浮点数。