1

我正在使用 CodeIgniter 的 Active Record,我的代码是:

  $current_balance = $this->get_campaign_balance($click_report['campaign_id']);

  $campaign_ledger = array(
    'campaign_id'   =>  $click_report['campaign_id'],
    'description'   =>  "Click Deduction from script",
    'amount'        =>  -1 * $click_report['advertiser_spend'],
    'balance'       =>  "" . $current_balance - $click_report['advertiser_spend'],
    'meta_data'     =>  $click_report['day'],
    'timestamp'     =>  time()
  );

  $this->db->insert('campaign_ledger', $campaign_ledger);

当我var_dump得到$campaign_ledger

array(6) {
  ["campaign_id"]=>
  string(3) "277"
  ["description"]=>
  string(27) "Click Deduction from script"
  ["amount"]=>
  float(-0.05)
  ["balance"]=>
  float(89.95)
  ["meta_data"]=>
  string(10) "2012-04-19"
  ["timestamp"]=>
  int(1334881599)
}

但是当数据进入我的数据库时,这balance91.36800000000001出于某种原因。那么断开连接是怎么回事呢?

编辑

更改为 后DECIMAL(10,4),我仍然得到91.3680输出。

4

1 回答 1

2

注意在 MySQL 中将货币存储为“DECIMAL”类型。如果你使用 Float,你会得到不一致的结果。我知道你没有在这里说你使用了哪种数据类型,但有些东西告诉我它可能不是 DECIMAL(10,2)。

于 2012-04-20T00:29:59.747 回答