J'utilise active Enregistrement et mon code de CodeIgniter est:Pourquoi MySQL n'aura-t-il pas les bonnes données?
$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);
Quand je var_dump
le $campaign_ledger
je reçois:
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)
}
Mais quand les données vont dans ma base de données, le balance
est 91.36800000000001
pour quelque raison. Alors, quel est le problème?
EDIT
Après avoir changé DECIMAL(10,4)
, je reçois toujours 91.3680
en sortie.
Quel est le type de données du champ de bilan dans la base de données? –
Qu'espériez-vous obtenir? –
Je l'avais comme FLOAT, j'ai changé pour 'DECIMAL (10,4)' et il est toujours éteint – Shamoon