我有一个变量$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的正确答案。
以前遇到过这种情况或者知道发生了什么事?感谢。
答案 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的错。