数字包含3位以上的计算错误

时间:2016-06-19 14:16:57

标签: php

我使用以下代码从数据库导入价格:

//implode items, turn into string
$item_implode = join("','", $item_array);

//declare an overall array for result
$product = array();

$result = $mysqli->query("SELECT Name, WPrice as price, APrice as a_price from my_table where Name IN ('$item_implode') ORDER BY FIELD (Name, '$item_implode');");

while($row = $result->fetch_assoc()) {

    $product_name = $row['Name'];
    // find all keys in $item_array which value is the products
        $keys = array_keys($item_array, $product_name);
    foreach ($keys as $key) {

        // add values for these keys
        $product[$key + 1]["Name"] = $row['Name'];
        $product[$key + 1]["price"] = number_format($row['price'],2);
        $product[$key + 1]["a_price"] = number_format($row['a_price'],2);
    }
}

然后我应用以下功能:

function price($m) {

global $product,$i; 

  if ($m == "a") {
    $value =  $product[$i]["a_price"];
  } 

  else { 
    $value = $product[$i]["price"]; //
  }

  return $value;

}

我正在尝试使用以下比较:

<?php if ( price( a )< price( default ) ) {echo "Smaller";} ?>

只要A的价格小于默认价格,就要回复Smaller

它适用于0999.99范围内的价格,但是如果涉及1,000或更高的价格,我会得到相反的结果(它回声当更大时更小,反之亦然)

是什么导致了这个问题?

1 个答案:

答案 0 :(得分:2)

您正在比较字符串,因为这是您在$(document).ready(function(){ $("body").hide() $("body").fadeIn(3000) }) $(document).on("keypress", function(event){ if(event.which ===65){ $("body").fadeOut(1500) } }) $product["price"]中存储的内容(函数$product["a_price"]返回字符串值)。对于数字number_format(),这些字符串包含逗号,这会破坏比较。

比较数值,在您需要显示值之前不要调用>= 1000