1

私はCodeIgniterのActiveRecordを使用しており、コードは次のとおりです。

  $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 に答える