为什么在PHP中分割小数时会出现INF

时间:2019-03-29 12:23:38

标签: php divide inf

我在数据库中有两个表。每个都有一列(varchar255),该列的数目很小(0-30)。我只想将两者分开,结果如下:
如果一列的编号为6,575,而另一列的编号为1,291,则方程式应为5,09。输出 6 。其他/大多数结果输出 INF

Image with more equations

数字来自数据库的foreach循环,这是图片中的代码:

echo $row["ton"]." - ".$row_w["weight"]." - ".$row["ton"] / $row_w["weight"]."<br>";

我尝试了bcdiv,但没有输出,并且is_infinite =1。我缺少什么?

2 个答案:

答案 0 :(得分:0)

在进行除法之前,您需要使用floatval将值(char字符串)转换为float。

inf表示结果是无穷大的,因为您将0除以很小的数字是由于将char作为浮点数处理而产生意外值,因为程序无法正确理解小数方式。

示例:

$var = '578.23';

$float_value_of_var = floatval($var);

,您的代码可能是这样的(仅供参考):

echo $row["ton"]." - ".$row_w["weight"]." - ".floatval($row["ton"]) / floatval($row_w["weight"])."<br>";

答案 1 :(得分:0)

感谢@ aynber / @ Ash-b看到了我存储不好的值。

$a = str_replace(",", ".", $row["ton"]);
$b = str_replace("," ,".", $row_w["weight"]);

echo $row["ton"]." - ".$row_w["weight"]." - ".$a / $b."<br>";

。代替,

无法设置要回答的评论,但案例已解决。