PHP忽略方程式小数点右边的数字


PHP Ignoring Digits to the Right of the Decimal Point in Equation

我有一个变量$x,它的值是从XML文件中读取的。从XML中读取的值是1.963788,不多也不少。当我输出$x时,我看到$x中的值实际上是1.963788。世界上一切都很好。

但是当我在方程中使用x时,比如

$pl = $x*125.0-200.0;

$pl的值为-75。不管出于什么原因,PHP似乎忽略了$x小数点右边的数字,或者只是去掉了这些数字,这使得$x包含1。我想也许这在其他语言中也有可能发生,所以我用c++写了出来,大惊喜的是,我得到了正确的答案45.4735。

有没有人遇到过这种情况或者知道发生了什么?谢谢。

你试过使用floatval吗?也许PHP将你的数字解释为字符串,而标准转换只是将其转换为整数。

这可能是由于$x被解释为字符串,并转换为整数而不是浮点值。

试题:

$pl = (float) $x * 125.0 - 200.0;

您的数字似乎没有转换成浮点数。如果我输入"1,963788",我就会得到你的结果。如果我使用'2,963788',我得到的结果是50。根据PHP文档的interval(这就是PHP试图将其转换为整数的样子):Strings will most likely return 0 although this depends on the leftmost characters of the string. The common rules of integer casting apply.

仔细检查$x实际拥有的值。它可能不是你所期望的,因为PHP似乎不同意它实际上是一个浮点数,否则它会这样输入它。

在计算$pl之前,在$x上执行var_dump,看看其中存储的实际值是什么。我已经尝试过你的代码,它返回正确的值45.4735,所以我可能不是PHP的错误。