【发布时间】:2017-09-30 02:00:52
【问题描述】:
我有一个脚本可以在一段时间内再次计算分期付款。
直接正确吗?显然不是根据 php。
这是发布的表单信息,我知道这是发布的内容,因为我是 var_dump() 所有发布值以确保发布的内容。
array
'total' => string string '999,999.99' (length=10)
'howmany' => string '16,666.67' (length=9)
'installmentcost1' => string '999,999.99' (length=10)
这是非常简单的php公式
$tempInstallments = (intval($_POST['howmany'])) - 1; // get 1 less so we can make sure the last payment is within total amount
$tempInstallmentCost = (floatval($_POST['installmentcost1'])) * $tempInstallments; //installment price * the installment period minus 1 month
$tempTotal = floatval($_POST['cpototal']) - $tempInstallmentCost; // get the final payment cost
现在不幸的是,由于某种原因,这给了我一些非常糟糕的数学,我也被 var_dump() 淘汰了。
这是我正在使用的 var_dump:
var_dump($tempInstallments);
var_dump($_POST['installmentcost1']);
var_dump($tempInstallmentCost);
var_dump($tempTotal);
下面是丢弃的内容:
int 59
string '16,666.67' (length=9)
float 944
float 55
如您所见,它们甚至与所需的实际信息都不接近。
例如,它应该如下所示:
int 59
string '16,666.67' (length=9)
float 983,333.53 (length=10)
float 16,666.46 (length=9)
任何想法为什么会发生这种情况。我什至确保信息是明确的浮点数或整数。
谢谢
【问题讨论】:
标签: php floating-point int