我完全困惑爲什麼PHP行爲的方式是低於。PHP的價格,以INT是失去了一分
上下文:我正在使用第三方支付網關庫。出於某種原因,我的一些付款收取1c以下的費用!這對我們來說是一個巨大的問題。爲了使事情更奇怪,它似乎只是一些具體的金額
看着他們的代碼,我能夠在一個簡單的PHP腳本中重現這一點。
<?php
$val = 568.3 * 100;
echo $val;
echo "\n";
echo (float) ($val);
echo "\n";
echo (int) ($val);
echo "\n";
echo intval($val);
echo "\n";
?>
預計產出將是56830所有回聲的,而是,當它的鑄造或使用INTVAL它打印出56829(1C以下),不使用類型轉換或浮動的作品。該修復似乎只是不使用int或intval轉換,但我很好奇爲什麼發生這種情況。
如果你放在56830那麼它都打印好。可重複使用568.31 * 100但不是568.32 * 100.
任何人都可以幫助我理解最新情況嗎?
編輯:float/floatval/no casting將返回預期值。
下面的工作,只是當使用568.3它損失1美分! $ val = 5.3 * 100; $ val = 56888.3 * 100;
如何使用['floatval()'](http://ch1.php.net/manual/en/function.floatval.php)? – samayo
http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency/ – zneak
在這裏閱讀從PHP手冊http://in3.php.net/language。 types.float ...雖然轉換爲int,但您可以先將float結果轉換爲字符串,然後轉換爲int,如echo(int)(string)($ val); – rock321987