我有一个变量$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的错误。