我不明白为什么这些数组给我不同的输出:
•这个值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
我的问题是为什么?我想要的始终是十进制值,但第一个代码,如我所说,是不与小数工作。
谢谢
在第一个示例中,您正在从数据库检索字符串值。在第二个示例中,您正在计算一个数学表达式。
你最好这样做:
$t = explode("/", $matrix[0][2]);
echo ($t[0] / $t[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),并在获得结果时将结果转换为float
第一个示例值中的Cos是字符串类型,第二个示例值是计算数学函数的答案是浮点类型。
如果你使用这种结构"echo $a = '1/4';"输出将是相同的。