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

时间:2011-07-18 15:53:37

标签: php floating-point

我有一个变量$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的正确答案。

以前遇到过这种情况或者知道发生了什么事?感谢。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

尝试:

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

答案 2 :(得分:1)

您的号码似乎无法以浮动方式投射。如果我使用'1,963788',我会得到你的结果。如果我使用'2,963788',我会收到50的结果。根据intval的PHP文档(这就是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似乎不同意它实际上是一个浮点数,或者它会输入它。

答案 3 :(得分:0)

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