PHP中的数学错误-数字被截断


Maths error in PHP - number truncated?

我将数字2.50存储在一个名为$price的变量中,我可以将其传递给函数,它可以识别值2.50,但当我尝试将其与2相乘时,我得到的答案是4。我假设PHP正在截断原始值,然后我认为它可能会将其解释为字符串,因为我正在从XML文档中获取值,但手册中说,如果它是字符串,它将正确地将其识别为2.50。如果有人能对此有所了解,我将不胜感激。

编辑:这是我正在使用的代码-

$Price = new Prices();
// Traverse XML document
foreach ($simpleXML->product as $product) {
    // Gather info from the product array
    $price = $product->price;
    $type = $product->type;
    $price = $Price->getRealPrice($price, $type);
}
function getRealPrice($price, $type) {
    // echo $price returns 2.50
    // Switch statement on type
    case 'Keychain':
        return 1.7 * $price; // This returns 3.4
        break;
}

返回3.4的事实才是真正的问题,就好像它在执行2 * 1.7,尽管它应该是2.5;我在最初的示例中选择了2.5 * 2,因为它可以更明显地看到问题。

更新:在我做了1.8 * $price之后,如果我用double的石膏来呼应$price,我会得到:2.503.6这两个点有点让我抓狂。。。

在函数的开头使用floatval this将字符串解析为float

function getRealPrice($price, $type) {
   $price = floatval($price);

这是一种猜测,但您应该确保值是"2.50"而不是"2,50"。